X-Git-Url: http://git.osdn.net/view?p=linuxjm%2FLDP_man-pages.git;a=blobdiff_plain;f=po4a%2Fsched%2Fpo%2Fja.po;h=0d68f6be5a360e9d95ddecbce403f987d402e96d;hp=84d901b5de659ba78fd4fc12b45d7fb9efc0cffc;hb=5618418a05886b550745e2bb4d21910858d500eb;hpb=79b413fc39f0626883f408a23520842321a86603 diff --git a/po4a/sched/po/ja.po b/po4a/sched/po/ja.po index 84d901b5..0d68f6be 100644 --- a/po4a/sched/po/ja.po +++ b/po4a/sched/po/ja.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2012-04-25 05:59+0900\n" -"PO-Revision-Date: 2012-03-23 04:56+0900\n" +"POT-Creation-Date: 2015-02-04 23:31+0900\n" +"PO-Revision-Date: 2015-01-25 07:23+0900\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -16,53 +16,52 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #. type: TH -#: build/C/man3/CPU_SET.3:25 +#: build/C/man3/CPU_SET.3:27 #, no-wrap msgid "CPU_SET" msgstr "CPU_SET" #. type: TH -#: build/C/man3/CPU_SET.3:25 -#, fuzzy, no-wrap -#| msgid "2006-03-23" +#: build/C/man3/CPU_SET.3:27 +#, no-wrap msgid "2012-03-15" -msgstr "2006-03-23" +msgstr "2012-03-15" #. type: TH -#: build/C/man3/CPU_SET.3:25 build/C/man2/clone.2:43 -#: build/C/man2/sched_get_priority_max.2:30 build/C/man3/sched_getcpu.3:24 -#: build/C/man2/sched_rr_get_interval.2:30 build/C/man2/sched_setaffinity.2:35 -#: build/C/man2/sched_setparam.2:31 build/C/man2/sched_setscheduler.2:47 -#: build/C/man2/sched_yield.2:30 build/C/man2/setns.2:4 -#: build/C/man2/unshare.2:17 +#: 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/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:25 build/C/man2/clone.2:43 -#: build/C/man2/sched_get_priority_max.2:30 build/C/man3/sched_getcpu.3:24 -#: build/C/man2/sched_rr_get_interval.2:30 build/C/man2/sched_setaffinity.2:35 -#: build/C/man2/sched_setparam.2:31 build/C/man2/sched_setscheduler.2:47 -#: build/C/man2/sched_yield.2:30 build/C/man2/setns.2:4 -#: build/C/man2/unshare.2:17 build/C/man3/get_nprocs_conf.3:24 +#: 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/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:26 build/C/man2/clone.2:44 -#: build/C/man2/sched_get_priority_max.2:31 build/C/man3/sched_getcpu.3:25 -#: build/C/man2/sched_rr_get_interval.2:31 build/C/man2/sched_setaffinity.2:36 -#: build/C/man2/sched_setparam.2:32 build/C/man2/sched_setscheduler.2:48 -#: build/C/man2/sched_yield.2:31 build/C/man2/setns.2:5 -#: build/C/man2/unshare.2:18 build/C/man3/get_nprocs_conf.3:25 +#: 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/man7/sched.7:33 build/C/man2/setns.2:9 build/C/man2/unshare.2:21 #, no-wrap msgid "NAME" msgstr "名前" #. type: Plain text -#: build/C/man3/CPU_SET.3:33 +#: build/C/man3/CPU_SET.3:35 msgid "" "CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, " "CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, " @@ -72,25 +71,22 @@ msgstr "" "CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, " "CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, " "CPU_ISSET_S, CPU_ZERO_S, CPU_COUNT_S, CPU_AND_S, CPU_OR_S, CPU_XOR_S, " -"CPU_EQUAL_S - macros for manipulating CPU sets" +"CPU_EQUAL_S - CPU 集合を操作するためのマクロ" #. type: SH -#: build/C/man3/CPU_SET.3:33 build/C/man2/clone.2:46 -#: build/C/man2/sched_get_priority_max.2:33 build/C/man3/sched_getcpu.3:27 -#: build/C/man2/sched_rr_get_interval.2:33 build/C/man2/sched_setaffinity.2:39 -#: build/C/man2/sched_setparam.2:34 build/C/man2/sched_setscheduler.2:51 -#: build/C/man2/sched_yield.2:33 build/C/man2/setns.2:7 -#: build/C/man2/unshare.2:20 build/C/man3/get_nprocs_conf.3:27 +#: 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 +#: build/C/man2/sched_setscheduler.2:30 build/C/man2/sched_yield.2:32 +#: build/C/man2/setns.2:11 build/C/man2/unshare.2:23 #, no-wrap msgid "SYNOPSIS" msgstr "書式" -#. Actually _BSD_SOURCE || _SVID_SOURCE -#. FIXME See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749 #. type: Plain text -#: build/C/man3/CPU_SET.3:37 build/C/man2/clone.2:52 -#: build/C/man2/sched_setaffinity.2:43 build/C/man2/setns.2:11 -#: build/C/man2/unshare.2:26 +#: build/C/man3/CPU_SET.3:39 build/C/man2/sched_setaffinity.2:42 +#: build/C/man2/setns.2:15 #, no-wrap msgid "" "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n" @@ -100,13 +96,13 @@ msgstr "" "B<#include Esched.hE>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:39 +#: build/C/man3/CPU_SET.3:41 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:43 +#: build/C/man3/CPU_SET.3:45 #, no-wrap msgid "" "BIB<, cpu_set_t *>IB<);>\n" @@ -118,13 +114,13 @@ msgstr "" "BIB<, cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:45 +#: build/C/man3/CPU_SET.3:47 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:52 +#: build/C/man3/CPU_SET.3:54 #, no-wrap msgid "" "BIB<,>\n" @@ -142,13 +138,13 @@ msgstr "" "B< cpu_set_t *>IB<, cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:54 +#: build/C/man3/CPU_SET.3:56 #, no-wrap msgid "BIB<, cpu_set_t *>IB<);>\n" msgstr "BIB<, cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:58 +#: build/C/man3/CPU_SET.3:60 #, no-wrap msgid "" "BIB<);>\n" @@ -160,13 +156,13 @@ msgstr "" "BIB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:60 +#: build/C/man3/CPU_SET.3:62 #, no-wrap msgid "BIB<, cpu_set_t *>IB<);>\n" msgstr "BIB<, cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:64 +#: build/C/man3/CPU_SET.3:66 #, no-wrap msgid "" "BIB<, size_t >IB<, cpu_set_t *>IB<);>\n" @@ -178,13 +174,13 @@ msgstr "" "BIB<, size_t >IB<, cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:66 +#: build/C/man3/CPU_SET.3:68 #, no-wrap msgid "BIB<, cpu_set_t *>IB<);>\n" msgstr "BIB<, cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:73 +#: build/C/man3/CPU_SET.3:75 #, no-wrap msgid "" "BIB<, cpu_set_t *>IB<,>\n" @@ -202,441 +198,442 @@ msgstr "" "B< cpu_set_t *>IB<, cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:76 +#: build/C/man3/CPU_SET.3:78 #, no-wrap msgid "BIB<, cpu_set_t *>IB<, cpu_set_t *>IB<);>\n" msgstr "BIB<, cpu_set_t *>IB<, cpu_set_t *>IB<);>\n" #. type: SH -#: build/C/man3/CPU_SET.3:77 build/C/man2/clone.2:58 -#: build/C/man2/sched_get_priority_max.2:39 build/C/man3/sched_getcpu.3:35 -#: build/C/man2/sched_rr_get_interval.2:37 build/C/man2/sched_setaffinity.2:50 -#: build/C/man2/sched_setparam.2:48 build/C/man2/sched_setscheduler.2:67 -#: build/C/man2/sched_yield.2:37 build/C/man2/setns.2:14 -#: build/C/man2/unshare.2:29 build/C/man3/get_nprocs_conf.3:33 +#: 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/man7/sched.7:35 build/C/man2/setns.2:18 build/C/man2/unshare.2:50 #, no-wrap msgid "DESCRIPTION" msgstr "説明" #. type: Plain text -#: build/C/man3/CPU_SET.3:84 +#: build/C/man3/CPU_SET.3:86 msgid "" "The I data structure represents a set of CPUs. CPU sets are used " "by B(2) and similar interfaces." msgstr "" -"The I data structure represents a set of CPUs. CPU sets are used " -"by B(2) and similar interfaces." +"I データ構造体は CPU 集合を表現している。 CPU 集合は " +"B(2) や同様のインターフェースで使用されている。" #. type: Plain text -#: build/C/man3/CPU_SET.3:91 +#: build/C/man3/CPU_SET.3:93 msgid "" -"The I data type is implemented as a bitset. However, the data " +"The I data type is implemented as a bit set. However, the data " "structure treated as considered opaque: all manipulation of CPU sets should " "be done via the macros described in this page." msgstr "" -"The I data type is implemented as a bitset. However, the data " -"structure treated as considered opaque: all manipulation of CPU sets should " -"be done via the macros described in this page." +"I データ型はビット集合として実装されている。 しかし、 データ構造体" +"はその実装を意識せずに扱うものとされており、 CPU 集合のすべての操作は、 この" +"ページで説明されているマクロを通して行うべきである。" #. type: Plain text -#: build/C/man3/CPU_SET.3:94 +#: build/C/man3/CPU_SET.3:96 msgid "The following macros are provided to operate on the CPU set I:" -msgstr "The following macros are provided to operate on the CPU set I:" +msgstr "以下のマクロが CPU 集合 I を操作するために提供されている。" #. type: TP -#: build/C/man3/CPU_SET.3:94 +#: build/C/man3/CPU_SET.3:96 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:99 +#: build/C/man3/CPU_SET.3:101 msgid "Clears I, so that it contains no CPUs." -msgstr "Clears I, so that it contains no CPUs." +msgstr "I をクリアする。 集合には何も CPU が含まれない状態となる。" #. type: TP -#: build/C/man3/CPU_SET.3:99 +#: build/C/man3/CPU_SET.3:101 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:105 +#: build/C/man3/CPU_SET.3:107 msgid "Add CPU I to I." -msgstr "Add CPU I to I." +msgstr "I に I を追加する。" #. type: TP -#: build/C/man3/CPU_SET.3:105 +#: build/C/man3/CPU_SET.3:107 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:111 +#: build/C/man3/CPU_SET.3:113 msgid "Remove CPU I from I." -msgstr "Remove CPU I from I." +msgstr "I から I を削除する。" #. type: TP -#: build/C/man3/CPU_SET.3:111 +#: build/C/man3/CPU_SET.3:113 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:117 +#: build/C/man3/CPU_SET.3:119 msgid "Test to see if CPU I is a member of I." -msgstr "Test to see if CPU I is a member of I." +msgstr "CPU I が I のメンバーであるかを検査する。" #. type: TP -#: build/C/man3/CPU_SET.3:117 +#: build/C/man3/CPU_SET.3:119 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:121 +#: build/C/man3/CPU_SET.3:123 msgid "Return the number of CPUs in I." -msgstr "Return the number of CPUs in I." +msgstr "I に含まれる CPU 数を返す。" #. type: Plain text -#: build/C/man3/CPU_SET.3:126 +#: build/C/man3/CPU_SET.3:128 msgid "" "Where a I argument is specified, it should not produce side effects, " "since the above macros may evaluate the argument more than once." msgstr "" -"Where a I argument is specified, it should not produce side effects, " -"since the above macros may evaluate the argument more than once." +"I 引き数が指定する場合、 その引き数は副作用を伴うべきではない。 上記のマ" +"クロは引き数を複数回評価する可能性があるからである。" #. type: Plain text -#: build/C/man3/CPU_SET.3:137 +#: build/C/man3/CPU_SET.3:139 msgid "" "The first available CPU on the system corresponds to a I value of 0, " "the next CPU corresponds to a I value of 1, and so on. The constant " "B (currently 1024) specifies a value one greater than the " "maximum CPU number that can be stored in I." msgstr "" -"The first available CPU on the system corresponds to a I value of 0, " -"the next CPU corresponds to a I value of 1, and so on. The constant " -"B (currently 1024) specifies a value one greater than the " -"maximum CPU number that can be stored in I." +"そのシステムで利用可能な最初の CPU が I 値 0 に対応し、 次の CPU が " +"I 値 1 に対応し、 以降も同様である。 定数 B (現在のところ " +"1024) は I に格納できる最大 CPU 数よりも大きな値である。" #. type: Plain text -#: build/C/man3/CPU_SET.3:139 +#: build/C/man3/CPU_SET.3:141 msgid "The following macros perform logical operations on CPU sets:" -msgstr "The following macros perform logical operations on CPU sets:" +msgstr "以下のマクロは CPU 集合どうしの論理操作を行う。" #. type: TP -#: build/C/man3/CPU_SET.3:139 +#: build/C/man3/CPU_SET.3:141 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:148 +#: build/C/man3/CPU_SET.3:150 msgid "" "Store the intersection of the sets I and I in I " "(which may be one of the source sets)." msgstr "" -"Store the intersection of the sets I and I in I " -"(which may be one of the source sets)." +"集合 I と I の積集合を I に格納する (元の集合のい" +"ずれかが I として使用される場合もある)。" #. type: TP -#: build/C/man3/CPU_SET.3:148 +#: build/C/man3/CPU_SET.3:150 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:157 +#: build/C/man3/CPU_SET.3:159 msgid "" "Store the union of the sets I and I in I (which " "may be one of the source sets)." msgstr "" -"Store the union of the sets I and I in I (which " -"may be one of the source sets)." +"集合 I と I の和集合を I に格納する (元の集合のい" +"ずれかが I として使用される場合もある)。" #. type: TP -#: build/C/man3/CPU_SET.3:157 +#: build/C/man3/CPU_SET.3:159 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:171 +#: build/C/man3/CPU_SET.3:173 msgid "" "Store the XOR of the sets I and I in I (which may " "be one of the source sets). The XOR means the set of CPUs that are in " "either I or I, but not both." msgstr "" -"Store the XOR of the sets I and I in I (which may " -"be one of the source sets). The XOR means the set of CPUs that are in " -"either I or I, but not both." +"集合 I と I の XOR を I に格納する (元の集合のいず" +"れかが I として使用される場合もある)。 XOR とは、 I か " +"I のいずれかに含まれるが、両方には含まれない集合のことである。" #. type: TP -#: build/C/man3/CPU_SET.3:171 +#: build/C/man3/CPU_SET.3:173 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:174 +#: build/C/man3/CPU_SET.3:176 msgid "Test whether two CPU set contain exactly the same CPUs." -msgstr "Test whether two CPU set contain exactly the same CPUs." +msgstr "二つの CPU 集合が全く同じ CPU を含んでいるかを検査する。" #. type: SS -#: build/C/man3/CPU_SET.3:174 +#: build/C/man3/CPU_SET.3:176 #, no-wrap msgid "Dynamically sized CPU sets" -msgstr "Dynamically sized CPU sets" +msgstr "動的に大きさが決まる CPU 集合" #. type: Plain text -#: build/C/man3/CPU_SET.3:180 +#: build/C/man3/CPU_SET.3:182 msgid "" "Because some applications may require the ability to dynamically size CPU " "sets (e.g., to allocate sets larger than that defined by the standard " "I data type), glibc nowadays provides a set of macros to support " "this." msgstr "" -"Because some applications may require the ability to dynamically size CPU " -"sets (e.g., to allocate sets larger than that defined by the standard " -"I data type), glibc nowadays provides a set of macros to support " -"this." +"いくつかのアプリケーションでは CPU 集合の大きさを動的に決める能力 (例えば、 " +"標準の I データ型で定義されたよりも大きい集合を割り当てるなど) が" +"必要となることがあるため、 現在 glibc はこれに対応するためにいくつかのマクロ" +"を提供している。" #. type: Plain text -#: build/C/man3/CPU_SET.3:182 +#: build/C/man3/CPU_SET.3:184 msgid "The following macros are used to allocate and deallocate CPU sets:" -msgstr "The following macros are used to allocate and deallocate CPU sets:" +msgstr "以下のマクロを使うと CPU 集合の割り当てと解放ができる。" #. type: TP -#: build/C/man3/CPU_SET.3:182 +#: build/C/man3/CPU_SET.3:184 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:187 +#: build/C/man3/CPU_SET.3:189 msgid "" "Allocate a CPU set large enough to hold CPUs in the range 0 to I." msgstr "" -"Allocate a CPU set large enough to hold CPUs in the range 0 to I." +"0 から I までの範囲の CPU を保持するのに十分な大きさの CPU 集合を" +"割り当てる。" #. type: TP -#: build/C/man3/CPU_SET.3:187 +#: build/C/man3/CPU_SET.3:189 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:197 +#: build/C/man3/CPU_SET.3:199 msgid "" "Return the size in bytes of the CPU set that would be needed to hold CPUs in " "the range 0 to I. This macro provides the value that can be " "used for the I argument in the B() macros described below." msgstr "" -"Return the size in bytes of the CPU set that would be needed to hold CPUs in " -"the range 0 to I. This macro provides the value that can be " -"used for the I argument in the B() macros described below." +"0 から I までの範囲の CPU を保持するのに必要な CPU 集合の大きさを" +"バイト数で返す。 このマクロが返す値は、 後述の B() マクロの " +"I 引き数として使用できる。" #. type: TP -#: build/C/man3/CPU_SET.3:197 +#: build/C/man3/CPU_SET.3:199 #, no-wrap msgid "B()" msgstr "B()" #. type: Plain text -#: build/C/man3/CPU_SET.3:201 +#: build/C/man3/CPU_SET.3:203 msgid "Free a CPU set previously allocated by B()." -msgstr "Free a CPU set previously allocated by B()." +msgstr "以前に B() で割り当てられた CPU 集合を解放する。" #. type: Plain text -#: build/C/man3/CPU_SET.3:208 +#: build/C/man3/CPU_SET.3:210 msgid "" "The macros whose names end with \"_S\" are the analogs of the similarly " "named macros without the suffix. These macros perform the same tasks as " "their analogs, but operate on the dynamically allocated CPU set(s) whose " "size is I bytes." msgstr "" -"The macros whose names end with \"_S\" are the analogs of the similarly " -"named macros without the suffix. These macros perform the same tasks as " -"their analogs, but operate on the dynamically allocated CPU set(s) whose " -"size is I bytes." +"名前が \"_S\" で終わるマクロは \"_S\" なしの同じ名前のマクロと同等である。 こ" +"れらのマクロは \"_S\" なしのものと同じ動作をするが、 動的に割り当てられた、 " +"大きさが I バイトの CPU 集合に対して操作を行う点が異なる。" #. type: SH -#: build/C/man3/CPU_SET.3:208 build/C/man2/clone.2:792 -#: build/C/man2/sched_get_priority_max.2:87 build/C/man3/sched_getcpu.3:38 -#: build/C/man2/sched_rr_get_interval.2:74 -#: build/C/man2/sched_setaffinity.2:108 build/C/man2/sched_setparam.2:88 -#: build/C/man2/sched_setscheduler.2:423 build/C/man2/sched_yield.2:42 -#: build/C/man2/setns.2:66 build/C/man2/unshare.2:183 -#: build/C/man3/get_nprocs_conf.3:44 +#: 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:138 +#: build/C/man2/unshare.2:277 #, no-wrap msgid "RETURN VALUE" msgstr "返り値" #. type: Plain text -#: build/C/man3/CPU_SET.3:217 +#: build/C/man3/CPU_SET.3:219 msgid "" "B() and B() return nonzero if I is in I; " "otherwise, it returns 0." msgstr "" -"B() and B() return nonzero if I is in I; " -"otherwise, it returns 0." +"B() と B() は、 I が I に含まれていれば 0 " +"以外を返し、含まれない場合 0 を返す。" #. type: Plain text -#: build/C/man3/CPU_SET.3:223 +#: build/C/man3/CPU_SET.3:225 msgid "" "B() and B() return the number of CPUs in I." -msgstr "" -"B() and B() return the number of CPUs in I." +msgstr "B() と B() は I に含まれる CPU 数を返す。" #. type: Plain text -#: build/C/man3/CPU_SET.3:228 +#: build/C/man3/CPU_SET.3:230 msgid "" "B() and B() return nonzero if the two CPU sets are " "equal; otherwise it returns 0." msgstr "" -"B() and B() return nonzero if the two CPU sets are " -"equal; otherwise it returns 0." +"B() と B() は、 二つの CPU 集合が等しければ 0 以外を" +"返し、 等しくない場合 0 を返す。" #. type: Plain text -#: build/C/man3/CPU_SET.3:233 +#: build/C/man3/CPU_SET.3:235 msgid "" "B() returns a pointer on success, or NULL on failure. (Errors " "are as for B(3).)" msgstr "" -"B() returns a pointer on success, or NULL on failure. (Errors " -"are as for B(3).)" +"B() は成功するとポインターを返し、 失敗すると NULL を返す (エラー" +"は B(3) と同じである)。" #. type: Plain text -#: build/C/man3/CPU_SET.3:237 +#: build/C/man3/CPU_SET.3:239 msgid "" "B() returns the number of bytes required to store a CPU set " "of the specified cardinality." msgstr "" -"B() returns the number of bytes required to store a CPU set " -"of the specified cardinality." +"B() は指定された大きさの CPU 集合を格納するのに必要なバイト数" +"を返す。" #. type: Plain text -#: build/C/man3/CPU_SET.3:239 +#: build/C/man3/CPU_SET.3:241 msgid "The other functions do not return a value." -msgstr "The other functions do not return a value." +msgstr "他の関数は値を返さない。" #. type: SH -#: build/C/man3/CPU_SET.3:239 build/C/man2/clone.2:909 -#: build/C/man3/sched_getcpu.3:50 build/C/man2/sched_setaffinity.2:149 -#: build/C/man2/setns.2:93 build/C/man2/unshare.2:200 +#: build/C/man3/CPU_SET.3:241 build/C/man2/clone.2:1031 +#: 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:186 build/C/man2/unshare.2:330 #, no-wrap msgid "VERSIONS" msgstr "バージョン" #. type: Plain text -#: build/C/man3/CPU_SET.3:247 +#: build/C/man3/CPU_SET.3:249 msgid "" "The B(), B(), B(), and B() macros " "were added in glibc 2.3.3." msgstr "" -"The B(), B(), B(), and B() macros " -"were added in glibc 2.3.3." +"マクロ B(), B(), B(), B() は glibc " +"2.3.3 で追加された。" #. type: Plain text -#: build/C/man3/CPU_SET.3:250 +#: build/C/man3/CPU_SET.3:252 msgid "B() first appeared in glibc 2.6." -msgstr "B() first appeared in glibc 2.6." +msgstr "B() は glibc 2.6 で初めて登場した。" #. type: Plain text -#: build/C/man3/CPU_SET.3:268 +#: build/C/man3/CPU_SET.3:270 msgid "" "B(), B(), B(), B(), B(), " "B(), B(), B(), B(), " -"B(), B(), B(), B(), B" -"(), and B() first appeared in glibc 2.7." +"B(), B(), B(), B(), " +"B(), and B() first appeared in glibc 2.7." msgstr "" "B(), B(), B(), B(), B(), " "B(), B(), B(), B(), " -"B(), B(), B(), B(), B" -"(), and B() first appeared in glibc 2.7." +"B(), B(), B(), B(), " +"B(), B() は glibc 2.7 で初めて登場した。" #. type: SH -#: build/C/man3/CPU_SET.3:268 build/C/man2/clone.2:916 -#: build/C/man2/sched_get_priority_max.2:101 build/C/man3/sched_getcpu.3:52 -#: build/C/man2/sched_rr_get_interval.2:95 -#: build/C/man2/sched_setaffinity.2:160 build/C/man2/sched_setparam.2:111 -#: build/C/man2/sched_setscheduler.2:445 build/C/man2/sched_yield.2:53 -#: build/C/man2/setns.2:97 build/C/man2/unshare.2:204 -#: build/C/man3/get_nprocs_conf.3:46 +#: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:1038 +#: 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:191 +#: build/C/man2/unshare.2:334 #, no-wrap msgid "CONFORMING TO" msgstr "準拠" #. type: Plain text -#: build/C/man3/CPU_SET.3:270 +#: build/C/man3/CPU_SET.3:272 msgid "These interfaces are Linux-specific." -msgstr "These interfaces are Linux-specific." +msgstr "これらのインターフェースは Linux 固有である。" #. type: SH -#: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:923 -#: build/C/man3/sched_getcpu.3:55 build/C/man2/sched_rr_get_interval.2:97 -#: build/C/man2/sched_setaffinity.2:162 build/C/man2/sched_setscheduler.2:448 -#: build/C/man2/sched_yield.2:55 build/C/man2/setns.2:101 -#: build/C/man2/unshare.2:208 build/C/man3/get_nprocs_conf.3:48 +#: build/C/man3/CPU_SET.3:272 build/C/man2/clone.2:1042 +#: 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/man7/sched.7:611 +#: build/C/man2/setns.2:195 build/C/man2/unshare.2:338 #, no-wrap msgid "NOTES" msgstr "注意" #. type: Plain text -#: build/C/man3/CPU_SET.3:273 +#: build/C/man3/CPU_SET.3:275 msgid "To duplicate a CPU set, use B(3)." -msgstr "To duplicate a CPU set, use B(3)." +msgstr "CPU 集合を複製するには、 B(3) を使用する。" #. type: Plain text -#: build/C/man3/CPU_SET.3:280 +#: build/C/man3/CPU_SET.3:282 msgid "" -"Since CPU sets are bitsets allocated in units of long words, the actual " +"Since CPU sets are bit sets allocated in units of long words, the actual " "number of CPUs in a dynamically allocated CPU set will be rounded up to the " "next multiple of I. An application should consider " "the contents of these extra bits to be undefined." msgstr "" -"Since CPU sets are bitsets allocated in units of long words, the actual " -"number of CPUs in a dynamically allocated CPU set will be rounded up to the " -"next multiple of I. An application should consider " -"the contents of these extra bits to be undefined." +"CPU 集合はロングワード単位に割り当てられるビット集合なので、 動的に割り当てら" +"れた CPU 集合の実際の CPU 数は I の次の倍数に切り上げ" +"られることになる。 アプリケーションは、 これらの余分なビットの内容は不定と考" +"えるべきである。" #. type: Plain text -#: build/C/man3/CPU_SET.3:292 +#: build/C/man3/CPU_SET.3:294 msgid "" "Notwithstanding the similarity in the names, note that the constant " "B indicates the number of CPUs in the I data type " -"(thus, it is effectively a count of bits in the bitset), while the " +"(thus, it is effectively a count of bits in the bit set), while the " "I argument of the B() macros is a size in bytes." msgstr "" -"Notwithstanding the similarity in the names, note that the constant " -"B indicates the number of CPUs in the I data type " -"(thus, it is effectively a count of bits in the bitset), while the " -"I argument of the B() macros is a size in bytes." +"名前は似ているが、 定数 B は I データ型に含まれる " +"CPU 数 (つまり、事実上ビット集合内のビットカウント) を示すのに対して、 マク" +"ロ B() の I 引き数はバイト単位のサイズである点に注意するこ" +"と。" #. type: Plain text -#: build/C/man3/CPU_SET.3:298 +#: build/C/man3/CPU_SET.3:300 msgid "" "The data types for arguments and return values shown in the SYNOPSIS are " "hints what about is expected in each case. However, since these interfaces " "are implemented as macros, the compiler won't necessarily catch all type " "errors if you violate the suggestions." msgstr "" -"The data types for arguments and return values shown in the SYNOPSIS are " -"hints what about is expected in each case. However, since these interfaces " -"are implemented as macros, the compiler won't necessarily catch all type " -"errors if you violate the suggestions." +"「書式」に書かれている引き数と返り値のデータ型は、それぞれの場合でどんな型が" +"期待されるかのヒントである。 しかしながら、 これらのインターフェースはマクロ" +"として実装されているため、 このヒントを守らなかった場合に、 コンパイラが必ず" +"しも全ての型エラーを捕捉できるとは限らない。" #. type: SH -#: build/C/man3/CPU_SET.3:298 build/C/man2/clone.2:970 -#: build/C/man2/sched_setscheduler.2:509 build/C/man2/setns.2:107 +#: build/C/man3/CPU_SET.3:300 build/C/man2/clone.2:1067 +#: build/C/man2/sched_setattr.2:369 build/C/man2/sched_setscheduler.2:214 #, no-wrap msgid "BUGS" msgstr "バグ" #. http://sourceware.org/bugzilla/show_bug.cgi?id=7029 #. type: Plain text -#: build/C/man3/CPU_SET.3:310 +#: build/C/man3/CPU_SET.3:312 msgid "" "On 32-bit platforms with glibc 2.8 and earlier, B() allocates " "twice as much space as is required, and B() returns a value " @@ -645,30 +642,30 @@ msgid "" "the macros that operate on dynamically allocated CPU sets. These bugs are " "fixed in glibc 2.9." msgstr "" -"On 32-bit platforms with glibc 2.8 and earlier, B() allocates " -"twice as much space as is required, and B() returns a value " -"twice as large as it should. This bug should not affect the semantics of a " -"program, but does result in wasted memory and less efficient operation of " -"the macros that operate on dynamically allocated CPU sets. These bugs are " -"fixed in glibc 2.9." +"glibc 2.8 以前の 32 ビットプラットフォームでは、 B() は必要な空間" +"の割り当てを二度行い、 B() は本来あるべき値の二倍の値を返" +"す。 このバグはプログラムの動作には影響を与えないはずだが、 無駄にメモリーを" +"消費し、 動的に割り当てられた CPU 集合に対して操作を行うマクロの動作の効率が" +"下がる結果となる。 これらのバグは glibc 2.9 で修正された。" #. type: SH -#: build/C/man3/CPU_SET.3:310 build/C/man3/get_nprocs_conf.3:65 +#: build/C/man3/CPU_SET.3:312 build/C/man2/clone.2:1109 +#: build/C/man2/setns.2:201 build/C/man2/unshare.2:372 #, no-wrap msgid "EXAMPLE" -msgstr "EXAMPLE" +msgstr "例" #. type: Plain text -#: build/C/man3/CPU_SET.3:313 +#: build/C/man3/CPU_SET.3:315 msgid "" "The following program demonstrates the use of some of the macros used for " "dynamically allocated CPU sets." msgstr "" -"The following program demonstrates the use of some of the macros used for " -"dynamically allocated CPU sets." +"以下のプログラムは、動的に割り当てた CPU 集合に対していくつかのマクロを使用す" +"る例を示している。" #. type: Plain text -#: build/C/man3/CPU_SET.3:321 +#: build/C/man3/CPU_SET.3:323 #, no-wrap msgid "" "#define _GNU_SOURCE\n" @@ -686,7 +683,7 @@ msgstr "" "#include Eassert.hE\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:328 +#: build/C/man3/CPU_SET.3:330 #, no-wrap msgid "" "int\n" @@ -704,7 +701,7 @@ msgstr "" " int num_cpus, cpu;\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:333 +#: build/C/man3/CPU_SET.3:335 #, no-wrap msgid "" " if (argc E 2) {\n" @@ -718,13 +715,13 @@ msgstr "" " }\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:335 +#: build/C/man3/CPU_SET.3:337 #, no-wrap msgid " num_cpus = atoi(argv[1]);\n" msgstr " num_cpus = atoi(argv[1]);\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:341 +#: build/C/man3/CPU_SET.3:343 #, no-wrap msgid "" " cpusetp = CPU_ALLOC(num_cpus);\n" @@ -740,13 +737,13 @@ msgstr "" " }\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:343 +#: build/C/man3/CPU_SET.3:345 #, no-wrap msgid " size = CPU_ALLOC_SIZE(num_cpus);\n" msgstr " size = CPU_ALLOC_SIZE(num_cpus);\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:347 +#: build/C/man3/CPU_SET.3:349 #, no-wrap msgid "" " CPU_ZERO_S(size, cpusetp);\n" @@ -758,13 +755,13 @@ msgstr "" " CPU_SET_S(cpu, size, cpusetp);\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:349 +#: build/C/man3/CPU_SET.3:351 #, no-wrap msgid " printf(\"CPU_COUNT() of set: %d\\en\", CPU_COUNT_S(size, cpusetp));\n" msgstr " printf(\"CPU_COUNT() of set: %d\\en\", CPU_COUNT_S(size, cpusetp));\n" #. type: Plain text -#: build/C/man3/CPU_SET.3:353 +#: build/C/man3/CPU_SET.3:355 #, no-wrap msgid "" " CPU_FREE(cpusetp);\n" @@ -776,18 +773,19 @@ msgstr "" "}\n" #. type: SH -#: build/C/man3/CPU_SET.3:354 build/C/man2/clone.2:1012 -#: build/C/man2/sched_get_priority_max.2:103 build/C/man3/sched_getcpu.3:75 -#: build/C/man2/sched_rr_get_interval.2:126 -#: build/C/man2/sched_setaffinity.2:215 build/C/man2/sched_setparam.2:113 -#: build/C/man2/sched_setscheduler.2:517 build/C/man2/sched_yield.2:79 -#: build/C/man2/setns.2:115 build/C/man2/unshare.2:244 +#: build/C/man3/CPU_SET.3:356 build/C/man2/clone.2:1206 +#: 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:226 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/man7/sched.7:664 +#: build/C/man2/setns.2:288 build/C/man2/unshare.2:459 #, no-wrap msgid "SEE ALSO" msgstr "関連項目" #. type: Plain text -#: build/C/man3/CPU_SET.3:358 +#: build/C/man3/CPU_SET.3:361 msgid "" "B(2), B(3), " "B(3), B(7)" @@ -795,26 +793,75 @@ msgstr "" "B(2), B(3), " "B(3), B(7)" +#. type: SH +#: build/C/man3/CPU_SET.3:361 build/C/man2/clone.2:1221 +#: 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:248 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:295 build/C/man2/unshare.2:470 +#, no-wrap +msgid "COLOPHON" +msgstr "この文書について" + +#. type: Plain text +#: build/C/man3/CPU_SET.3:369 build/C/man2/clone.2:1229 +#: 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:256 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:303 build/C/man2/unshare.2:478 +#, fuzzy +#| msgid "" +#| "This page is part of release 3.78 of the Linux I 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.79 of the Linux I 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 プロジェクトのリリース 3.78 の一部\n" +"である。プロジェクトの説明とバグ報告に関する情報は\n" +"http://www.kernel.org/doc/man-pages/ に書かれている。" + #. type: TH -#: build/C/man2/clone.2:43 +#: build/C/man2/clone.2:42 #, no-wrap msgid "CLONE" msgstr "CLONE" #. type: TH -#: build/C/man2/clone.2:43 -#, fuzzy, no-wrap -#| msgid "2011-10-04" -msgid "2011-09-08" -msgstr "2011-10-04" +#: build/C/man2/clone.2:42 build/C/man2/unshare.2:20 +#, no-wrap +msgid "2014-09-21" +msgstr "2014-09-21" #. type: Plain text -#: build/C/man2/clone.2:46 +#: build/C/man2/clone.2:45 msgid "clone, __clone2 - create a child process" msgstr "clone, __clone2 - 子プロセスを作成する" #. type: Plain text -#: build/C/man2/clone.2:57 +#: 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: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 +msgid "B<#include Esched.hE>\n" +msgstr "B<#include Esched.hE>\n" + +#. type: Plain text +#: build/C/man2/clone.2:55 #, no-wrap msgid "" "BIB<)(void *), void *>IB<,>\n" @@ -826,65 +873,131 @@ msgstr "" "B< /* pid_t *>IB<, struct user_desc *>IB<, pid_t *>IB< */ );>\n" #. type: Plain text +#: 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:61 +#, no-wrap +msgid "" +"BIB<, void *>IB<,>\n" +"B< void *>IB<, void *>IB<,>\n" +"B< struct pt_regs *>IB<);>\n" +msgstr "" +"BIB<, void *>IB<,>\n" +"B< void *>IB<, void *>IB<,>\n" +"B< struct pt_regs *>IB<);>\n" + +#. type: Plain text +#: build/C/man2/clone.2:66 +msgid "" +"Feature Test Macro Requirements for glibc wrapper function (see " +"B(7)):" +msgstr "" +"glibc ラッパー関数の機能検査マクロの要件 (B(7) 参照):" + +#. type: Plain text #: build/C/man2/clone.2:69 +msgid "B():" +msgstr "B():" + +#. type: TP +#: 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: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: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:80 build/C/man3/sched_getcpu.3:52 +#: build/C/man2/unshare.2:47 +#, no-wrap +msgid "" +"_BSD_SOURCE || _SVID_SOURCE\n" +" /* _GNU_SOURCE also suffices */\n" +msgstr "" +"_BSD_SOURCE || _SVID_SOURCE\n" +" /* _GNU_SOURCE も定義される */\n" + +#. type: Plain text +#: build/C/man2/clone.2:87 +msgid "B() creates a new process, in a manner similar to B(2)." +msgstr "B() は、 B(2) と似た方法で新しいプロセスを作成する。" + +#. type: Plain text +#: build/C/man2/clone.2:94 msgid "" -"B() creates a new process, in a manner similar to B(2). It is " -"actually a library function layered on top of the underlying B() " -"system call, hereinafter referred to as B. A description of " -"B is given toward the end of this page." +"This page describes both the glibc B() wrapper function and the " +"underlying system call on which it is based. The main text describes the " +"wrapper function; the differences for the raw system call are described " +"toward the end of this page." msgstr "" -"B() は B(2) と同じような方法で新しいプロセスを作成する。 " -"B() には、ライブラリ関数とその下層にあたる B() システムコール" -"が存在する。以下の説明では、システムコールの方を B と表すこととす" -"る。 B に関する説明はこのマニュアルの最後の方にある。" +"このページでは、 glibc の B() ラッパー関数とその裏で呼ばれるシステム" +"コールの両方について説明している。 メインの説明はラッパー関数に関するものであ" +"る。 素のシステムコールにおける差分はこのページの最後の方で説明する。" #. type: Plain text -#: build/C/man2/clone.2:81 +#: build/C/man2/clone.2:106 msgid "" -"Unlike B(2), these calls allow the child process to share parts of its " -"execution context with the calling process, such as the memory space, the " -"table of file descriptors, and the table of signal handlers. (Note that on " -"this manual page, \"calling process\" normally corresponds to \"parent " +"Unlike B(2), B() allows the child process to share parts of " +"its execution context with the calling process, such as the memory space, " +"the table of file descriptors, and the table of signal handlers. (Note that " +"on this manual page, \"calling process\" normally corresponds to \"parent " "process\". But see the description of B below.)" msgstr "" -"B(2) とは異なり、これらのコールでは、子プロセス (child process) と呼" -"び出し元のプロセスとが、メモリ空間、 ファイルディスクリプタのテーブル、シグナ" -"ル・ハンドラのテーブルなどの 実行コンテキストの一部を共有できる。 (このマニュ" +"B(2) とは異なり、B() では、子プロセス (child process) と呼び出" +"し元のプロセスとが、メモリー空間、ファイルディスクリプターのテーブル、シグナ" +"ルハンドラーのテーブルなどの 実行コンテキストの一部を共有できる。 (このマニュ" "アルにおける「呼び出し元のプロセス」は、通常は 「親プロセス」と一致する。但" "し、後述の B の項も参照のこと)" #. type: Plain text -#: build/C/man2/clone.2:86 +#: build/C/man2/clone.2:111 msgid "" "The main use of B() is to implement threads: multiple threads of " "control in a program that run concurrently in a shared memory space." msgstr "" "B() の主要な使用法はスレッド (threads) を実装することである: 一つのプ" -"ログラムの中の複数のスレッドは共有されたメモリ空間で 同時に実行される。" +"ログラムの中の複数のスレッドは共有されたメモリー空間で 同時に実行される。" #. type: Plain text -#: build/C/man2/clone.2:107 +#: build/C/man2/clone.2:131 msgid "" "When the child process is created with B(), it executes the function " -"application I(I). (This differs from B(2), where execution " -"continues in the child from the point of the B(2) call.) The I " -"argument is a pointer to a function that is called by the child process at " -"the beginning of its execution. The I argument is passed to the I " -"function." +"I(I). (This differs from B(2), where execution continues in " +"the child from the point of the B(2) call.) The I argument is a " +"pointer to a function that is called by the child process at the beginning " +"of its execution. The I argument is passed to the I function." msgstr "" -"B() で子プロセスが作成された時に、作成された子プロセスは関数 I" -"(I) を実行する。 (この点が B(2) とは異なる。 B(2) の場" -"合、子プロセスは B(2) が呼び出された場所から実行を続ける。) I 引" -"き数は、子プロセスが実行を始める時に子プロセスが呼び出す 関数へのポインタであ" -"る。 I 引き数はそのまま I 関数へと渡される。" +"B() で子プロセスが作成された時に、作成された子プロセスは関数 " +"I(I) を実行する。 (この点が B(2) とは異なる。 B(2) の" +"場合、子プロセスは B(2) が呼び出された場所から実行を続ける。) I " +"引き数は、子プロセスが実行を始める時に子プロセスが呼び出す 関数へのポインター" +"である。 I 引き数はそのまま I 関数へと渡される。" #. type: Plain text -#: build/C/man2/clone.2:117 +#: build/C/man2/clone.2:141 msgid "" "When the I(I) function application returns, the child process " "terminates. The integer returned by I is the exit code for the child " -"process. The child process may also terminate explicitly by calling B" -"(2) or after receiving a fatal signal." +"process. The child process may also terminate explicitly by calling " +"B(2) or after receiving a fatal signal." msgstr "" "I(I) 関数が終了すると、子プロセスは終了する。 I によって返され" "た整数が子プロセスの終了コードとなる。 子プロセスは、 B(2) を呼んで明" @@ -892,7 +1005,7 @@ msgstr "" "る。" #. type: Plain text -#: build/C/man2/clone.2:133 +#: build/C/man2/clone.2:157 msgid "" "The I argument specifies the location of the stack used by the " "child process. Since the child and calling process may share memory, it is " @@ -904,23 +1017,23 @@ msgid "" "up for the child stack." msgstr "" "I 引き数は、子プロセスによって使用されるスタックの位置を指定す" -"る。 子プロセスと呼び出し元のプロセスはメモリを共有することがあるため、 子プ" -"ロセスは呼び出し元のプロセスと同じスタックで実行することができない。 このた" -"め、呼び出し元のプロセスは子プロセスのスタックのためのメモリ空間を 用意して、" -"この空間へのポインタを B() へ渡さなければならない。 (HP PA プロセッサ" -"以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレスが小さ" -"い方向) へと伸びる。このため、普通は I は子プロセスのスタックの" -"ために用意したメモリ空間の一番大きい アドレスを指すようにする。" +"る。 子プロセスと呼び出し元のプロセスはメモリーを共有することがあるため、 子" +"プロセスは呼び出し元のプロセスと同じスタックで実行することができない。 このた" +"め、呼び出し元のプロセスは子プロセスのスタックのためのメモリー空間を 用意し" +"て、この空間へのポインターを B() へ渡さなければならない。 (HP PA プロ" +"セッサ以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレス" +"が小さい方向) へと伸びる。このため、普通は I は子プロセスのス" +"タックのために用意したメモリー空間の一番大きい アドレスを指すようにする。" #. type: Plain text -#: build/C/man2/clone.2:149 +#: build/C/man2/clone.2:173 msgid "" "The low byte of I contains the number of the I " "sent to the parent when the child dies. If this signal is specified as " "anything other than B, then the parent process must specify the " -"B<__WALL> or B<__WCLONE> options when waiting for the child with B" -"(2). If no signal is specified, then the parent process is not signaled " -"when the child terminates." +"B<__WALL> or B<__WCLONE> options when waiting for the child with " +"B(2). If no signal is specified, then the parent process is not " +"signaled when the child terminates." msgstr "" "I の下位 1 バイトは子プロセスが死んだ場合に親プロセスへと送られる I<終" "了シグナル (termination signal)> の番号を指定する。このシグナルとして " @@ -930,7 +1043,7 @@ msgstr "" "にシグナルは送られない。" #. type: Plain text -#: build/C/man2/clone.2:154 +#: build/C/man2/clone.2:178 msgid "" "I 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 " @@ -941,45 +1054,45 @@ msgstr "" "何を共有するかを指定する:" #. type: TP -#: build/C/man2/clone.2:154 +#: build/C/man2/clone.2:178 #, no-wrap msgid "B (since Linux 2.5.49)" msgstr "B (Linux 2.5.49 以降)" #. type: Plain text -#: build/C/man2/clone.2:164 +#: build/C/man2/clone.2:188 msgid "" "Erase child thread ID at location I in child memory when the child " "exits, and do a wakeup on the futex at that address. The address involved " "may be changed by the B(2) system call. This is used by " "threading libraries." msgstr "" -"子プロセスが終了したときに子プロセスのメモリ内の I が指す場所にある子プ" -"ロセスのスレッド ID を消去し、 そのアドレスで futex を wake (起床) させる。 " -"このアドレスは B(2) システムコールで変更することができる。 " -"この機能はスレッドライブラリで使用される。" +"子プロセスが終了したときに子プロセスのメモリー内の I が指す場所にある子" +"プロセスのスレッド ID を消去し、 そのアドレスで futex を wake (起床) させ" +"る。 このアドレスは B(2) システムコールで変更することができ" +"る。 この機能はスレッドライブラリで使用される。" #. type: TP -#: build/C/man2/clone.2:164 +#: build/C/man2/clone.2:188 #, no-wrap msgid "B (since Linux 2.5.49)" msgstr "B (Linux 2.5.49 以降)" #. type: Plain text -#: build/C/man2/clone.2:169 +#: build/C/man2/clone.2:193 msgid "Store child thread ID at location I in child memory." msgstr "" -"子プロセスのメモリ内の I が指す場所に子プロセスのスレッド ID を格納す" +"子プロセスのメモリー内の I が指す場所に子プロセスのスレッド ID を格納す" "る。" #. type: TP -#: build/C/man2/clone.2:169 build/C/man2/unshare.2:53 +#: build/C/man2/clone.2:193 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 2.0)" +msgstr "B (Linux 2.0 以降)" #. type: Plain text -#: build/C/man2/clone.2:182 +#: build/C/man2/clone.2:206 msgid "" "If B is set, the calling process and the child process share " "the same file descriptor table. Any file descriptor created by the calling " @@ -989,14 +1102,14 @@ msgid "" "process is also affected." msgstr "" "B が設定された場合、呼び出し元のプロセスと子プロセスはファイル" -"ディスクリプタの テーブルを共有する。 呼び出し元プロセスとその子プロセスの一" -"方が作成した ファイルディスクリプタは、もう一方においても有効である。 同じよ" -"うに、一方のプロセスがファイルディスクリプタを閉じたり、 (B(2) " -"B 操作を使って) ディスクリプタに関連するフラグを変更したりすると、 " -"もう一方のプロセスにも影響する。" +"ディスクリプターの テーブルを共有する。 呼び出し元プロセスとその子プロセスの" +"一方が作成した ファイルディスクリプターは、もう一方においても有効である。 同" +"じように、一方のプロセスがファイルディスクリプターを閉じたり、 (B(2) " +"B 操作を使って) ディスクリプターに関連するフラグを変更したりする" +"と、 もう一方のプロセスにも影響する。" #. type: Plain text -#: build/C/man2/clone.2:196 +#: build/C/man2/clone.2:220 msgid "" "If B is not set, the child process inherits a copy of all file " "descriptors opened in the calling process at the time of B(). (The " @@ -1007,57 +1120,57 @@ msgid "" "calling process or the child process do not affect the other process." msgstr "" "B が設定されていない場合、子プロセスは、 B() が実行され" -"た時点で、呼び出し元のプロセスがオープンしている全ての ファイルディスクリプタ" -"のコピーを継承する (子プロセスの複製されたファイルディスクリプタは、 対応する" -"呼び出し元のプロセスのファイルディスクリプタと 同じファイル記述 (B(2) " -"参照) を参照する)。 これ以降に、呼び出し元のプロセスと子プロセスの一方が ファ" -"イルディスクリプタの操作 (ファイルディスクリプタの オープン・クローズや、ファ" -"イルディスクリプタ・フラグの変更) を行っても、もう一方のプロセスには影響を与" -"えない。" +"た時点で、呼び出し元のプロセスがオープンしている全ての ファイルディスクリプ" +"ターのコピーを継承する (子プロセスの複製されたファイルディスクリプターは、 対" +"応する呼び出し元のプロセスのファイルディスクリプターと 同じファイル記述 " +"(B(2) 参照) を参照する)。 これ以降に、呼び出し元のプロセスと子プロセス" +"の一方が ファイルディスクリプターの操作 (ファイルディスクリプターの オープ" +"ン・クローズや、ファイルディスクリプターフラグの変更) を行っても、もう一方の" +"プロセスには影響を与えない。" #. type: TP -#: build/C/man2/clone.2:196 build/C/man2/unshare.2:61 +#: build/C/man2/clone.2:220 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 2.0)" +msgstr "B (Linux 2.0 以降)" #. type: Plain text -#: build/C/man2/clone.2:211 +#: build/C/man2/clone.2:235 msgid "" -"If B is set, the caller and the child process share the same file " -"system information. This includes the root of the file system, the current " -"working directory, and the umask. Any call to B(2), B(2), or " -"B(2) performed by the calling process or the child process also " -"affects the other process." +"If B is set, the caller and the child process share the same " +"filesystem information. This includes the root of the filesystem, the " +"current working directory, and the umask. Any call to B(2), " +"B(2), or B(2) performed by the calling process or the child " +"process also affects the other process." msgstr "" -"B が設定された場合、呼び出し元のプロセスと子プロセスが同じファイ" -"ル・システム 情報を共有する。ファイル・システム情報は、ファイル・システムの" -"ルート (root)、 カレント・ワーキング・ディレクトリ (current working " -"directory) や umask などである。 呼び出し元のプロセスや子プロセスのどちらか" -"一方によって B(2), B(2), B(2) が呼び出されると、もう一" -"方のプロセスにも影響が及ぶ。" +"B が設定された場合、呼び出し元のプロセスと子プロセスが同じファイル" +"システム 情報を共有する。ファイルシステム情報は、ファイルシステムのルート " +"(root)、 カレントワーキングディレクトリ (current working directory) や " +"umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって " +"B(2), B(2), B(2) が呼び出されると、もう一方のプロセス" +"にも影響が及ぶ。" #. type: Plain text -#: build/C/man2/clone.2:223 +#: build/C/man2/clone.2:247 msgid "" -"If B is not set, the child process works on a copy of the file " -"system information of the calling process at the time of the B() " +"If B is not set, the child process works on a copy of the " +"filesystem information of the calling process at the time of the B() " "call. Calls to B(2), B(2), B(2) performed later by " "one of the processes do not affect the other process." msgstr "" "B が設定されていない場合、子プロセスは、 B() が実行された時" -"点での、呼び出し元のプロセスのファイル・システム情報のコピーを 使用する。 こ" -"れ以降は、呼び出し元のプロセスと子プロセスの一方が B(2), B" -"(2), B(2) を呼び出しても、もう一方のプロセスには影響を与えない。" +"点での、呼び出し元のプロセスのファイルシステム情報のコピーを 使用する。 これ" +"以降は、呼び出し元のプロセスと子プロセスの一方が B(2), B(2), " +"B(2) を呼び出しても、もう一方のプロセスには影響を与えない。" #. type: TP -#: build/C/man2/clone.2:223 +#: build/C/man2/clone.2:247 #, no-wrap msgid "B (since Linux 2.6.25)" msgstr "B (Linux 2.6.25 以降)" #. type: Plain text -#: build/C/man2/clone.2:232 +#: build/C/man2/clone.2:256 msgid "" "If B 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(2)) the " @@ -1071,7 +1184,7 @@ msgstr "" #. the anticipatory and CFQ scheduler #. with CFQ and AS. #. type: Plain text -#: build/C/man2/clone.2:249 +#: 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 " @@ -1093,7 +1206,7 @@ msgstr "" "B を利用することで I/O 性能を良くすることができる。" #. type: Plain text -#: build/C/man2/clone.2:253 +#: build/C/man2/clone.2:277 msgid "" "If the kernel is not configured with the B option, this flag " "is a no-op." @@ -1102,13 +1215,13 @@ msgstr "" "意味も持たない。" #. type: TP -#: build/C/man2/clone.2:253 build/C/man2/unshare.2:74 +#: build/C/man2/clone.2:277 build/C/man2/unshare.2:96 #, no-wrap msgid "B (since Linux 2.6.19)" msgstr "B (Linux 2.6.19 以降)" #. type: Plain text -#: build/C/man2/clone.2:263 +#: build/C/man2/clone.2:287 msgid "" "If B is set, then create the process in a new IPC namespace. " "If this flag is not set, then (as with B(2)), the process is created " @@ -1120,25 +1233,38 @@ msgstr "" "び出し元のプロセスと同じ IPC 名前空間でプロセスが 作成される。 このフラグは、" "コンテナの実装での使用を意図して用意されたものである。" +#. commit 7eafd7c74c3f2e67c27621b987b28397110d643f +#. https://lwn.net/Articles/312232/ +#. type: Plain text +#: build/C/man2/clone.2:299 +msgid "" +"An IPC namespace provides an isolated view of System\\ V IPC objects (see " +"B(7)) and (since Linux 2.6.30) POSIX message queues (see " +"B(7)). The common characteristic of these IPC mechanisms is " +"that IPC objects are identified by mechanisms other than filesystem " +"pathnames." +msgstr "" +"IPC 名前空間は、独立の System\\ V IPC オブジェクト空間 (B(7) 参照) を" +"提供する 。 (Linux 2.6.30 以降では) 独立した POSIX メッセージキュー空間 " +"(B(7) 参照) も提供される。 これらの IPC 機構に共通の特徴とし" +"て、 IPC オブジェクトはファイルシステムのパス名とは違った仕組みで識別されると" +"いう点がある。" + #. type: Plain text -#: build/C/man2/clone.2:274 +#: build/C/man2/clone.2:303 msgid "" -"An IPC namespace consists of the set of identifiers for System V IPC " -"objects. (These objects are created using B(2), B(2), and " -"B(2)). 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 namespaces." +"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 " +"namespaces." msgstr "" -"IPC 名前空間は、System V IPC オブジェクト用の識別子 (identifiers) の 集合で構" -"成される (System V IPC オブジェクトは B(2), B(2), B" -"(2) を使って作成される)。 ある IPC 名前空間に作成されたオブジェクトは、 その" -"名前空間のメンバーである他のすべてのプロセスからも見えるが、 違う IPC 名前空" -"間のプロセスからは見えない。" +"ある IPC 名前空間に作成されたオブジェクトは、 その名前空間のメンバーである他" +"のすべてのプロセスからも見えるが、 違う IPC 名前空間のプロセスからは見えな" +"い。" #. type: Plain text -#: build/C/man2/clone.2:278 +#: build/C/man2/clone.2:307 msgid "" -"When an IPC namespace is destroyed (i.e, when the last process that is a " +"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 " "automatically destroyed." msgstr "" @@ -1146,37 +1272,37 @@ msgstr "" "が終了する時)、 その名前空間の全ての IPC オブジェクトは自動的に破棄される。" #. type: Plain text -#: build/C/man2/clone.2:287 +#: build/C/man2/clone.2:314 msgid "" -"Use of this flag requires: a kernel configured with the B " -"and B options and that the process be privileged " -"(B). This flag can't be specified in conjunction with " -"B." +"Only a privileged process (B) can employ B. " +"This flag can't be specified in conjunction with B." msgstr "" -"このフラグを使用するためには、 カーネルでオプション B と " -"B を有効になっていること、 プロセスが特権 (B) " -"を持っていることが必要である。 このフラグは B と組み合わせて使" -"うことはできない。" +"特権プロセス (B) だけが B を使用できる。 このフ" +"ラグは B と組み合わせて指定することはできない。" + +#. type: Plain text +#: build/C/man2/clone.2:317 +msgid "For further information on IPC namespaces, see B(7)." +msgstr "IPC 名前空間の詳細は B(7) を参照。" #. type: TP -#: build/C/man2/clone.2:287 build/C/man2/unshare.2:91 +#: build/C/man2/clone.2:317 build/C/man2/unshare.2:113 #, no-wrap msgid "B (since Linux 2.6.24)" msgstr "B (Linux 2.6.24 以降)" -#. FIXME Check when the implementation was completed #. type: Plain text -#: build/C/man2/clone.2:292 +#: build/C/man2/clone.2:321 msgid "" -"(The implementation of this flag was only completed by about kernel version " +"(The implementation of this flag was completed only by about kernel version " "2.6.29.)" -msgstr "(このフラグの実装は、Linux 2.6.29 あたりまでに完成した。)" +msgstr "(このフラグの実装は、Linux 2.6.29 あたりまでには完成した。)" #. type: Plain text -#: build/C/man2/clone.2:301 +#: build/C/man2/clone.2:330 msgid "" "If B is set, then create the process in a new network " -"namespace. If this flag is not set, then (as with B(2)), the process " +"namespace. If this flag is not set, then (as with B(2)) the process " "is created in the same network namespace as the calling process. This flag " "is intended for the implementation of containers." msgstr "" @@ -1186,8 +1312,9 @@ msgstr "" "ロセスが 作成される。 このフラグは、コンテナの実装での使用を意図して用意され" "たものである。" +#. FIXME . Add pointer to veth(4) page when it is eventually completed #. type: Plain text -#: build/C/man2/clone.2:315 +#: 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 " @@ -1199,91 +1326,71 @@ msgid "" "in another namespace." msgstr "" "ネットワーク名前空間は、分離されたネットワークスタックを提供するものである " -"(ネットワークスタックとは、 ネットワークデバイスインタフェース、IPv4 や IPv6 " -"プロトコルスタック、 I、 I ディレクトリツリー、ソ" -"ケットなどである)。 物理ネットワークデバイスが所属できるネットワーク名前空間" -"は一つだけである。 仮想ネットワークデバイス (\"veth\") のペアにより パイプ風" -"の抽象化 (abstraction) が実現されており、 これを使うことで、ネットワーク名前" -"空間間のトンネルを作成したり、 別の名前空間の物理ネットワークデバイスへのブ" -"リッジを作成したり することができる。" +"(ネットワークスタックとは、 ネットワークデバイスインターフェース、IPv4 や " +"IPv6 プロトコルスタック、 I、 I ディレクトリツ" +"リー、ソケットなどである)。 物理ネットワークデバイスが所属できるネットワーク" +"名前空間は一つだけである。 仮想ネットワークデバイス (\"veth\") のペアにより " +"パイプ風の抽象化 (abstraction) が実現されており、 これを使うことで、ネット" +"ワーク名前空間間のトンネルを作成したり、 別の名前空間の物理ネットワークデバイ" +"スへのブリッジを作成したり することができる。" #. type: Plain text -#: build/C/man2/clone.2:320 +#: build/C/man2/clone.2:352 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(7)." msgstr "" "ネットワーク名前空間が解放される時 (すなわち、その名前空間の最後のプロセスが" "終了する時)、 物理ネットワークデバイスは初期ネットワーク名前空間 (initial " "network namespace) に戻される (親プロセスのネットワーク名前空間に戻される訳で" -"はない)。" +"はない)。 ネットワーク名前空間のさらなる情報は B(7) を参照。" #. type: Plain text -#: build/C/man2/clone.2:325 +#: build/C/man2/clone.2:357 msgid "" -"Use of this flag requires: a kernel configured with the B " -"option and that the process be privileged (B)." -msgstr "" -"このフラグを使用するためには、 カーネルでオプション B を有効に" -"なっていること、 プロセスが特権 (B) を持っていることが必要で" -"ある。" +"Only a privileged process (B) can employ B." +msgstr "特権プロセス (B) だけが B を使用できる。" #. type: TP -#: build/C/man2/clone.2:325 +#: build/C/man2/clone.2:357 #, no-wrap msgid "B (since Linux 2.4.19)" msgstr "B (Linux 2.4.19 以降)" #. type: Plain text -#: build/C/man2/clone.2:328 -msgid "Start the child in a new mount namespace." -msgstr "子プロセスを新しいマウント名前空間 (mount namespace) で開始する。" - -#. type: Plain text -#: build/C/man2/clone.2:349 +#: build/C/man2/clone.2:367 msgid "" -"Every process lives in a mount namespace. The I of a process is " -"the data (the set of mounts) describing the file hierarchy as seen by that " -"process. After a B(2) or B() where the B flag " -"is not set, the child lives in the same mount namespace as the parent. The " -"system calls B(2) and B(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." +"If B is set, the cloned child is started in a new mount " +"namespace, initialized with a copy of the namespace of the parent. If " +"B is not set, the child lives in the same mount namespace as " +"the parent." msgstr "" -"各プロセスはある一つのマウント名前空間中に存在する。プロセスの I<名前空間 " -"(namespace)> は、そのプロセスから見えるファイル階層を表すデータ (mount の集" -"合) である。 B フラグがセットされずに B(2) か B" -"() が呼ばれると、子プロセスは親プロセスと同じマウント名前空間に作成される。 " -"システムコール B(2)、 B(2) が呼ばれると呼び出し元のプロセスの" -"マウント名前空間が変更され、この結果 呼び出し元のプロセスと同じ名前空間にいる" -"プロセスはすべて影響を受けるが、 異なるマウント名前空間にいるプロセスは影響を" -"受けない。" +"B がセットされている場合、 clone で作成された子プロセスは新しい" +"マウント名前空間で開始され、 新しい名前空間は親プロセスの名前空間のコピーで初" +"期化される。 B がセットされていない場合、 子プロセスは親プロセス" +"と同じマウント名前空間となる。" #. type: Plain text -#: build/C/man2/clone.2:356 -msgid "" -"After a B() where the B flag is set, the cloned child " -"is started in a new mount namespace, initialized with a copy of the " -"namespace of the parent." -msgstr "" -"B フラグがセットされて B() が呼ばれると、clone で作成さ" -"れた子プロセスは新しいマウント名前空間で 開始される。新しい名前空間は親プロセ" -"スの名前空間のコピーで初期化される。" +#: build/C/man2/clone.2:370 +msgid "For further information on mount namespaces, see B(7)." +msgstr "マウント名前空間の詳細は B(7) を参照。" +#. See https://lwn.net/Articles/543273/ #. type: Plain text -#: build/C/man2/clone.2:368 +#: build/C/man2/clone.2:383 msgid "" -"Only a privileged process (one having the B capability) may " -"specify the B flag. It is not permitted to specify both " -"B and B in the same B() call." +"Only a privileged process (B) can employ B. It " +"is not permitted to specify both B and B in the same " +"B() call." msgstr "" -"特権プロセス (B ケーパビリティを持つプロセス) のみが " -"B フラグを指定することができる。 一つの B() 呼び出し" -"で、 B と B の両方を指定することはできない。" +"特権プロセス (B) のみが B を指定することができ" +"る。 一つの B() 呼び出しで、 B と B の両方を指" +"定することはできない。" #. type: TP -#: build/C/man2/clone.2:368 +#: build/C/man2/clone.2:383 #, no-wrap msgid "B (since Linux 2.6.24)" msgstr "B (Linux 2.6.24 以降)" @@ -1295,10 +1402,10 @@ msgstr "B (Linux 2.6.24 以降)" #. The primary kernel commit is 30e49c263e36341b60b735cbef5ca37912549264 #. Author: Pavel Emelyanov #. type: Plain text -#: build/C/man2/clone.2:385 +#: build/C/man2/clone.2:400 msgid "" "If B is set, then create the process in a new PID namespace. " -"If this flag is not set, then (as with B(2)), the process is created " +"If this flag is not set, then (as with B(2)) the process is created " "in the same PID namespace as the calling process. This flag is intended for " "the implementation of containers." msgstr "" @@ -1308,103 +1415,106 @@ msgstr "" "装での使用を意図して用意されたものである。" #. type: Plain text -#: build/C/man2/clone.2:394 +#: build/C/man2/clone.2:405 +msgid "" +"For further information on PID namespaces, see B(7) and " +"B(7)" +msgstr "PID 名前空間の詳細は B(7) と B(7) を参照。" + +#. type: Plain text +#: build/C/man2/clone.2:414 +msgid "" +"Only a privileged process (B) can employ B. " +"This flag can't be specified in conjunction with B or " +"B." +msgstr "" +"特権プロセス (B) だけが B を使用できる。 このフ" +"ラグは B や B と組み合わせて指定することはできな" +"い。" + +#. type: TP +#: build/C/man2/clone.2:414 +#, no-wrap +msgid "B" +msgstr "B" + +#. 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" -"(2), B(2), or B() will produce processes with PIDs that are " -"unique within the namespace." +"(This flag first became meaningful for B() in Linux 2.6.23, the " +"current B() 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(2), B(2), B() を呼び出すと、その名前空間で一意" -"な PID を持ったプロセスが作成される。" +"(このフラグが B() で意味を持つようになったのは Linux 2.6.23 である。 " +"現在の B() の動作が取り込まれたのは Linux 3.5 であり、 ユーザー名前空" +"間が完全に機能するようにする最後の機能が取り込まれたのは Linux 3.8 である。)" #. type: Plain text -#: build/C/man2/clone.2:406 +#: build/C/man2/clone.2:431 msgid "" -"The first process created in a new namespace (i.e., the process created " -"using the B 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(8). Unlike the traditional " -"B 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 is set, then create the process in a new user " +"namespace. If this flag is not set, then (as with B(2)) the process " +"is created in the same user namespace as the calling process." msgstr "" -"新しい名前空間で作成される最初のプロセス (つまり、 B フラグを" -"使って作成されたプロセス) の PID は 1 であり、 このプロセスはその名前空間にお" -"ける \"init\" プロセスとなる。 この名前空間において孤児 (orphaned) となった子" -"プロセスについては、 B(8) ではなくこのプロセスが親プロセスとなる。 昔" -"ながらの B プロセスとは違い、PID 名前空間の \"init\" プロセスは終了 " -"(terminated) する ことができ、その場合には、この名前空間の全てのプロセスが終" -"了される。" +"B がセットされている場合、新しいユーザー名前空間でプロセスを作" +"成する。 このフラグがセットされていない場合、 (B(2) の場合と同様に) 呼" +"び出し元のプロセスと同じユーザー名前空間でプロセスが作成される。" #. type: Plain text -#: build/C/man2/clone.2:425 +#: 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(2) always returns the PID " -"associated with the namespace in which the process lives.)" +"For further information on user namespaces, see B(7) and " +"B(7)" msgstr "" -"PID 名前空間間には階層構造が形成される。 新しい PID 名前空間が作成されると、" -"その名前空間のプロセスは、 新しい名前空間を作成したプロセスの PID 名前空間で" -"見える。 同様に、親の PID 名前空間自体が別の PID 名前空間の子供の場合には、 " -"子供の PID 名前空間と親の PID 名前空間のプロセスはどれも 親の親の PID 名前空" -"間でも見えることになる。 反対に、「子供」の PID 名前空間のプロセスには、 親の" -"名前空間のプロセスは見えない。 名前空間に階層構造が存在するということは、個々" -"のプロセスは 複数の PID を持つということを意味している。 そのプロセスが見える" -"名前空間一つにつき PID が一つあり、 それぞれの PID は対応する名前空間において" -"一意である。 (B(2) を呼び出すと、常にそのプロセスが存在している名前" -"空間における PID が返される。)" +"ユーザー名前空間の詳細は B(7) と B(7) を参照。" -#. 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:441 +#: 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 so that tools " -"such as B(1) work correctly. (If B is also included in " -"I, then it isn't necessary to change the root directory: a new procfs " -"instance can be mounted directly over I.)" +"Before Linux 3.8, use of B required that the caller have " +"three capabilities: B, B, and B. " +"Starting with Linux 3.8, no privileges are needed to create a user namespace." msgstr "" -"新しい名前空間の作成後には、 子プロセスにおいて、 B(1) といったツールが" -"正しく動作するように、 自身の root ディレクトリを変更し、 I に新しい " -"procfs インスタンスをマウントするのがよいだろう。 (B に " -"B も指定されていた場合には、root ディレクトリを変更する必要はな" -"く、 いきなり新しい procfs インスタンスを I にマウントすることができ" -"る。)" +"Linux 3.8 より前では、 B を使用するには、 呼び出し元は " +"B, B, B の 3 つのケーパリビティを持っ" +"ている必要があった。 Linux 3.8 以降では、 ユーザー名前空間を作成するのに特権" +"は必要なくなった。" +#. 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:448 +#: build/C/man2/clone.2:461 msgid "" -"Use of this flag requires: a kernel configured with the B " -"option and that the process be privileged (B). This flag " -"can't be specified in conjunction with B." +"This flag can't be specified in conjunction with B or " +"B. For security reasons, B cannot be specified " +"in conjunction with B." msgstr "" -"このフラグを使用するためには、 カーネルでオプション B を有効に" -"なっていること、 プロセスが特権 (B) を持っていることが必要で" -"ある。 このフラグは B と組み合わせて使うことはできない。" +"このフラグは B や B と組み合わせて指定することは" +"できない。 セキュリティ上の理由から、 B は B と組み" +"合わせて指定することはできない。" + +#. type: Plain text +#: build/C/man2/clone.2:464 build/C/man2/unshare.2:209 +msgid "For further information on user namespaces, see B(7)." +msgstr "ユーザー名前空間の詳細は B(7) を参照。" #. type: TP -#: build/C/man2/clone.2:448 build/C/man2/unshare.2:140 +#: build/C/man2/clone.2:464 build/C/man2/unshare.2:209 #, no-wrap msgid "B (since Linux 2.6.19)" msgstr "B (Linux 2.6.19 以降)" #. type: Plain text -#: build/C/man2/clone.2:460 +#: build/C/man2/clone.2:476 msgid "" "If B 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(2)), the process is created in the same UTS namespace as the " +"with B(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 が設定された場合、新しい UTS 名前空間でプロセスを作成する。 " @@ -1414,13 +1524,13 @@ msgstr "" "る。 このフラグは、コンテナの実装での使用を意図して用意されたものである。" #. type: Plain text -#: build/C/man2/clone.2:472 +#: build/C/man2/clone.2:487 msgid "" "A UTS namespace is the set of identifiers returned by B(2); among " -"these, the domain name and the host name can be modified by B" -"(2) and B(2), respectively. Changes made to the identifiers " -"in a UTS namespace are visible to all other processes in the same namespace, " -"but are not visible to processes in other UTS namespaces." +"these, the domain name and the hostname can be modified by " +"B(2) and B(2), respectively. Changes made to " +"the identifiers in a UTS namespace are visible to all other processes in the " +"same namespace, but are not visible to processes in other UTS namespaces." msgstr "" "UTS 名前空間は、 B(2) が返す識別子の集合である。 識別子としてはドメイ" "ン名とホスト名があり、 それぞれ B(2), B(2) で修" @@ -1428,23 +1538,24 @@ msgstr "" "のすべての プロセスに見えるが、別の UTS 名前空間のプロセスには見えない。" #. type: Plain text -#: build/C/man2/clone.2:477 +#: build/C/man2/clone.2:492 msgid "" -"Use of this flag requires: a kernel configured with the B " -"option and that the process be privileged (B)." -msgstr "" -"このフラグを使用するためには、 カーネルでオプション B を有効に" -"なっていること、 プロセスが特権 (B) を持っていることが必要で" -"ある。" +"Only a privileged process (B) can employ B." +msgstr "特権プロセス (B) だけが B を使用できる。" + +#. type: Plain text +#: build/C/man2/clone.2:495 +msgid "For further information on UTS namespaces, see B(7)." +msgstr "UTS 名前空間の詳細は B(7) を参照。" #. type: TP -#: build/C/man2/clone.2:477 +#: build/C/man2/clone.2:495 #, no-wrap msgid "B (since Linux 2.3.12)" msgstr "B (Linux 2.3.12 以降)" #. type: Plain text -#: build/C/man2/clone.2:484 +#: build/C/man2/clone.2:502 msgid "" "If B is set, then the parent of the new child (as returned by " "B(2)) will be the same as that of the calling process." @@ -1453,7 +1564,7 @@ msgstr "" "プロセスは呼び出し元のプロセスの親プロセスと同じになる。" #. type: Plain text -#: build/C/man2/clone.2:490 +#: build/C/man2/clone.2:508 msgid "" "If B is not set, then (as with B(2)) the child's parent " "is the calling process." @@ -1462,7 +1573,7 @@ msgstr "" "プロセスがその子供の親になる。" #. type: Plain text -#: build/C/man2/clone.2:498 +#: build/C/man2/clone.2:516 msgid "" "Note that it is the parent process, as returned by B(2), which is " "signaled when the child terminates, so that if B is set, then " @@ -1474,29 +1585,29 @@ msgstr "" "ロセスではなく呼び出し元のプロセスの 親プロセスにシグナルが送られる。" #. type: TP -#: build/C/man2/clone.2:498 +#: build/C/man2/clone.2:516 #, no-wrap msgid "B (since Linux 2.5.49)" msgstr "B (Linux 2.5.49 以降)" #. type: Plain text -#: build/C/man2/clone.2:506 +#: build/C/man2/clone.2:524 msgid "" "Store child thread ID at location I in parent and child memory. (In " "Linux 2.5.32-2.5.48 there was a flag B that did this.)" msgstr "" -"親プロセスと子プロセスのメモリ内の I が指す領域に子プロセスのスレッド " -"ID を格納する。 (Linux 2.5.32-2.5.48 では、 同じことをする B と" -"いうフラグが存在した。)" +"親プロセスと子プロセスのメモリー内の I が指す領域に子プロセスのスレッ" +"ド ID を格納する。 (Linux 2.5.32-2.5.48 では、 同じことをする " +"B というフラグが存在した。)" #. type: TP -#: build/C/man2/clone.2:506 +#: build/C/man2/clone.2:524 #, no-wrap msgid "B (obsolete)" msgstr "B (廃止予定)" #. type: Plain text -#: build/C/man2/clone.2:517 +#: build/C/man2/clone.2:535 msgid "" "If B is set, the child process is created with the same process " "ID as the calling process. This is good for hacking the system, but " @@ -1509,13 +1620,13 @@ msgstr "" "0) だけがこのフラグを指定できる。 Linux 2.5.16 で削除された。" #. type: TP -#: build/C/man2/clone.2:517 +#: build/C/man2/clone.2:535 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 2.2)" +msgstr "B (Linux 2.2 以降)" #. type: Plain text -#: build/C/man2/clone.2:524 +#: build/C/man2/clone.2:542 msgid "" "If B is specified, and the calling process is being traced, " "then trace the child also (see B(2))." @@ -1524,28 +1635,28 @@ msgstr "" "場合、子プロセスも 同様に追跡される。 (B(2) を参照のこと)" #. type: TP -#: build/C/man2/clone.2:524 +#: build/C/man2/clone.2:542 #, no-wrap msgid "B (since Linux 2.5.32)" msgstr "B (Linux 2.5.32 以降)" #. type: Plain text -#: build/C/man2/clone.2:531 +#: build/C/man2/clone.2:549 msgid "" "The I argument is the new TLS (Thread Local Storage) descriptor. " "(See B(2).)" msgstr "" -"I 引き数は、新しい TLS (Thread Local Storage) ディスクリプタである。 " -"(B(2) を参照のこと)" +"I 引き数は、新しい TLS (Thread Local Storage) ディスクリプターであ" +"る。 (B(2) を参照のこと)" #. type: TP -#: build/C/man2/clone.2:531 +#: build/C/man2/clone.2:549 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 2.0)" +msgstr "B (Linux 2.0 以降)" #. type: Plain text -#: build/C/man2/clone.2:547 +#: build/C/man2/clone.2:565 msgid "" "If B is set, the calling process and the child process share " "the same table of signal handlers. If the calling process or child process " @@ -1556,16 +1667,16 @@ msgid "" "B(2) without affecting the other process." msgstr "" "B が設定された場合、呼び出し元のプロセスと子プロセスは同じシグ" -"ナル・ハン ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのど" -"ちらかが B(2) を呼び出してシグナルに対応する動作を変更した場合、 " -"もう一方のプロセスのシグナル動作も変更される。 但し、呼び出し元のプロセスと子" -"プロセスは、 プロセス毎に、シグナル・マスク (signal mask) と処理待ちシグナル" -"の集合 を持っている。このため、あるプロセスは、 B(2) を使用し" -"て、もう一方のプロセスに影響を与えずに シグナルを禁止 (block) したり許可 " -"(unblock) したりできる。" +"ナルハン ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのどち" +"らかが B(2) を呼び出してシグナルに対応する動作を変更した場合、 も" +"う一方のプロセスのシグナル動作も変更される。 但し、呼び出し元のプロセスと子プ" +"ロセスは、 プロセス毎に、シグナルマスク (signal mask) と処理待ちシグナルの集" +"合 を持っている。このため、あるプロセスは、 B(2) を使用して、も" +"う一方のプロセスに影響を与えずに シグナルを禁止 (block) したり許可 (unblock) " +"したりできる。" #. type: Plain text -#: build/C/man2/clone.2:558 +#: build/C/man2/clone.2:576 msgid "" "If B is not set, the child process inherits a copy of the " "signal handlers of the calling process at the time B() is called. " @@ -1573,12 +1684,12 @@ msgid "" "effect on the other process." msgstr "" "B が設定されていない場合、子プロセスは B() が実行され" -"た時点での、呼び出し元のプロセスのシグナル・ハンドラの コピーを継承する。これ" +"た時点での、呼び出し元のプロセスのシグナルハンドラーの コピーを継承する。これ" "以降は、一方のプロセスが B(2) を呼び出しても、もう一方のプロセス" "には影響を与えない。" #. type: Plain text -#: build/C/man2/clone.2:566 +#: build/C/man2/clone.2:584 msgid "" "Since Linux 2.6.0-test6, I must also include B if " "B is specified" @@ -1587,13 +1698,13 @@ msgstr "" "も I に含めなければならない。" #. type: TP -#: build/C/man2/clone.2:566 +#: build/C/man2/clone.2:584 #, no-wrap msgid "B (since Linux 2.6.0-test2)" msgstr "B (Linux 2.6.0-test2 以降)" #. type: Plain text -#: build/C/man2/clone.2:575 +#: build/C/man2/clone.2:593 msgid "" "If B is set, then the child is initially stopped (as though " "it was sent a B signal), and must be resumed by sending it a " @@ -1605,39 +1716,47 @@ msgstr "" #. glibc 2.8 removed this defn from bits/sched.h #. type: Plain text -#: build/C/man2/clone.2:583 +#: build/C/man2/clone.2:601 msgid "" "This flag was I from Linux 2.6.25 onward, and was I " "altogether in Linux 2.6.38." msgstr "" +"このフラグは Linux 2.6.25 以降ではI<非推奨>であり、\n" +"Linux 2.6.38 で完全にI<削除>された。" #. type: TP -#: build/C/man2/clone.2:583 +#: build/C/man2/clone.2:601 #, no-wrap msgid "B (since Linux 2.5.10)" msgstr "B (Linux 2.5.10 以降)" #. type: Plain text -#: build/C/man2/clone.2:592 +#: build/C/man2/clone.2:619 msgid "" "If B is set, then the child and the calling process share a " -"single list of System V semaphore undo values (see B(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) values (see " +"B(2)). In this case, the shared list accumulates I 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(2)). If this flag is not set, then " +"the child has a separate I list that is initially empty." msgstr "" "B がセットされると、子プロセスと呼び出し元プロセスは一つの " -"System V セマフォのアンドゥ値リスト (B(2) 参照) を共有する。このフラ" -"グがセットされていなければ、 子プロセスは独自のアンドゥリストを持つ (リストの" -"初期値は空である)。" +"System\\ V セマフォの調整値 (I) (B(2) 参照) を共有する。 この" +"場合、共有されたリストはこのリストを共有する全プロセスの I 値を積算" +"し、 セマフォ調整はこのリストを共有している最後のプロセスが終了した際 (また" +"は B(2) を使ってリストの共有が中止された際) に実行される。 このフラ" +"グがセットされていなければ、 子プロセスは独自のセマフォ I リストを持" +"つ (リストの初期値は空である)。" #. type: TP -#: build/C/man2/clone.2:592 +#: build/C/man2/clone.2:619 #, no-wrap msgid "B (since Linux 2.4.0-test8)" msgstr "B (Linux 2.4.0-test8以降)" #. type: Plain text -#: build/C/man2/clone.2:601 +#: build/C/man2/clone.2:628 msgid "" "If B is set, the child is placed in the same thread group as " "the calling process. To make the remainder of the discussion of " @@ -1645,26 +1764,26 @@ msgid "" "processes within a thread group." msgstr "" "B が設定された場合、子プロセスは呼び出し元のプロセスと同じス" -"レッド・グループに 置かれる。 B についての以降の議論を読みやす" -"くするため、 「スレッド」という用語はスレッド・グループの中のプロセスを 参照" -"するのに使うこととする。" +"レッドグループに 置かれる。 B についての以降の議論を読みやすく" +"するため、 「スレッド」という用語はスレッドグループの中のプロセスを 参照する" +"のに使うこととする。" #. type: Plain text -#: build/C/man2/clone.2:609 +#: 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 " "PID is the so-called thread group identifier (TGID) for the thread group. " "Since Linux 2.4, calls to B(2) return the TGID of the caller." msgstr "" -"スレッド・グループは、 スレッド集合で一つの PID を共有するという POSIX スレッ" -"ドの概念をサポートするために Linux 2.4 に加えられた機能であった。 内部的に" -"は、この共有 PID はいわゆるそのスレッドグループの スレッド・グループ識別子 " -"(TGID) である。 Linux 2.4 以降では、 B(2) の呼び出しではそのプロセス" -"のスレッド・グループ ID を返す。" +"スレッドグループは、 スレッド集合で一つの PID を共有するという POSIX スレッド" +"の概念をサポートするために Linux 2.4 に加えられた機能であった。 内部的には、" +"この共有 PID はいわゆるそのスレッドグループの スレッドグループ識別子 (TGID) " +"である。 Linux 2.4 以降では、 B(2) の呼び出しではそのプロセスのス" +"レッドグループ ID を返す。" #. type: Plain text -#: build/C/man2/clone.2:618 +#: 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 " @@ -1676,18 +1795,18 @@ msgstr "" "返され、 スレッドは自分自身の TID を B(2) で取得できる。" #. type: Plain text -#: build/C/man2/clone.2:628 +#: build/C/man2/clone.2:655 msgid "" "When a call is made to B() without specifying B, then " "the resulting thread is placed in a new thread group whose TGID is the same " "as the thread's TID. This thread is the I of the new thread group." msgstr "" "B を指定せずに B() の呼び出しが行われると、 生成された" -"スレッドはそのスレッドの TID と同じ値の TGID を持つ 新しいスレッド・グループ" -"に置かれる。このスレッドは 新しいスレッド・グループの「リーダー」である。" +"スレッドはそのスレッドの TID と同じ値の TGID を持つ 新しいスレッドグループに" +"置かれる。このスレッドは 新しいスレッドグループの「リーダー」である。" #. type: Plain text -#: build/C/man2/clone.2:650 +#: build/C/man2/clone.2:677 msgid "" "A new thread created with B has the same parent process as the " "caller of B() (i.e., like B), so that calls to " @@ -1699,75 +1818,78 @@ msgid "" msgstr "" "B を指定して作成された新しいスレッドは、 (B の場" "合と同様に) B() を呼び出し元と同じ親プロセスを持つ。 そのため、 " -"B(2) を呼ぶと、一つのスレッド・グループに属すスレッドは全て同じ値を" -"返す。 B で作られたスレッドが終了した際に、 そのスレッドを " +"B(2) を呼ぶと、一つのスレッドグループに属すスレッドは全て同じ値を返" +"す。 B で作られたスレッドが終了した際に、 そのスレッドを " "B() を使って生成したスレッドには B (もしくは他の終了シグナ" "ル) は送信されない。 また、 B(2) を使って終了したスレッドの状態を取得" "することもできない (そのようなスレッドは I (分離された) といわれ" "る)。" #. type: Plain text -#: build/C/man2/clone.2:655 +#: 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 (or other termination) signal." msgstr "" -"スレッド・グループに属す全てのスレッドが終了した後、 そのスレッド・グループの" -"親プロセスに B (もしくは他の終了シグナル) が送られる。" +"スレッドグループに属す全てのスレッドが終了した後、 そのスレッドグループの親プ" +"ロセスに B (もしくは他の終了シグナル) が送られる。" #. type: Plain text -#: build/C/man2/clone.2:660 +#: build/C/man2/clone.2:687 msgid "" "If any of the threads in a thread group performs an B(2), then all " "threads other than the thread group leader are terminated, and the new " "program is executed in the thread group leader." msgstr "" -"スレッド・グループに属すいずれかのスレッドが B(2) を実行すると、ス" -"レッド・グループ・リーダー以外の全てのスレッドは 終了され、新しいプロセスがそ" -"のスレッド・グループ・リーダーの下で 実行される。" +"スレッドグループに属すいずれかのスレッドが B(2) を実行すると、スレッ" +"ドグループリーダー以外の全てのスレッドは 終了され、新しいプロセスがそのスレッ" +"ドグループリーダーの下で 実行される。" #. type: Plain text -#: build/C/man2/clone.2:666 +#: build/C/man2/clone.2:693 msgid "" "If one of the threads in a thread group creates a child using B(2), " "then any thread in the group can B(2) for that child." msgstr "" -"スレッド・グループに属すスレッドの一つが B(2) を使って子プロセスを作成" -"した場合、 スレッド・グループのどのスレッドであっても その子供を B(2) " -"できる。" +"スレッドグループに属すスレッドの一つが B(2) を使って子プロセスを作成し" +"た場合、 スレッドグループのどのスレッドであっても その子供を B(2) でき" +"る。" #. type: Plain text -#: build/C/man2/clone.2:674 +#: build/C/man2/clone.2:706 msgid "" "Since Linux 2.5.35, I must also include B if " -"B is specified." +"B is specified (and note that, since Linux 2.6.0-test6, " +"B also requires B to be included)." msgstr "" "Linux 2.5.35 以降では、 B を指定する場合、 I に " -"B も含まれていなければならない。" +"B も含まれていなければならない (Linux 2.6.0-test6 以降では、 " +"B を指定する場合 B も指定する必要がある点に注意する" +"こと)。" #. type: Plain text -#: build/C/man2/clone.2:679 +#: build/C/man2/clone.2:711 msgid "" -"Signals may be sent to a thread group as a whole (i.e., a TGID) using B" -"(2), or to a specific thread (i.e., TID) using B(2)." +"Signals may be sent to a thread group as a whole (i.e., a TGID) using " +"B(2), or to a specific thread (i.e., TID) using B(2)." msgstr "" -"B(2) を使ってスレッド・グループ全体 (つまり TGID) にシグナルを送ること" -"もできれば、 B(2) を使って特定のスレッド (つまり TID) にシグナルを送" -"ることもできる。" +"B(2) を使ってスレッドグループ全体 (つまり TGID) にシグナルを送ることも" +"できれば、 B(2) を使って特定のスレッド (つまり TID) にシグナルを送る" +"こともできる。" #. type: Plain text -#: build/C/man2/clone.2:684 +#: 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 " "ignored in) all members of the thread group." msgstr "" -"シグナルの配送と処理はプロセス全体に影響する: ハンドラを設定していないシグナ" -"ルがあるスレッドに配送されると、 そのシグナルはスレッド・グループの全メンバー" +"シグナルの配送と処理はプロセス全体に影響する: ハンドラーを設定していないシグ" +"ナルがあるスレッドに配送されると、 そのシグナルはスレッドグループの全メンバー" "に影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。" #. type: Plain text -#: build/C/man2/clone.2:697 +#: build/C/man2/clone.2:729 msgid "" "Each thread has its own signal mask, as set by B(2), but " "signals can be pending either: for the whole process (i.e., deliverable to " @@ -1778,13 +1900,13 @@ msgid "" msgstr "" "各々のスレッドは独自のシグナルマスクを持っており、 B(2) で設定" "できる。 だが、処理待ちのシグナルには、 B(2) で送信されるプロセス全体" -"に対するもの (つまり、スレッド・グループの どのメンバーにも配送できるもの) " +"に対するもの (つまり、スレッドグループの どのメンバーにも配送できるもの) " "と、 B(2) で送信される個々のスレッドに対するものがありえる。 " "B(2) を呼び出すと、プロセス全体に対する処理待ちシグナルと呼び出" "し元の スレッドに対する処理待ちシグナルを結合したシグナル集合が返される。" #. type: Plain text -#: build/C/man2/clone.2:709 +#: build/C/man2/clone.2:741 msgid "" "If B(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 " @@ -1793,23 +1915,23 @@ msgid "" "accept the same signal using B(2), the kernel will arbitrarily " "select one of these threads to receive a signal sent using B(2)." msgstr "" -"B(2) を使ってスレッド・グループにシグナルが送られた場合で、 そのスレッ" -"ド・グループがそのシグナルに対するシグナル・ハンドラが 登録されていたときに" -"は、シグナル・ハンドラはスレッド・グループの メンバーのうち、ただ一つのスレッ" -"ドでだけ起動される。ハンドラが 起動されるスレッドは、そのシグナルを禁止 " -"(block) していない メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。 " -"スレッド・グループに属す複数のスレッドが B(2) を使って同じシグ" -"ナルを待っている場合、 これらのスレッドの中から一つをカーネルが勝手に選択" -"し、 そのスレッドが B を使って送信されたシグナルを受信する。" +"B(2) を使ってスレッドグループにシグナルが送られた場合で、 そのスレッド" +"グループがそのシグナルに対するシグナルハンドラーが 登録されていたときには、シ" +"グナルハンドラーはスレッドグループの メンバーのうち、ただ一つのスレッドでだけ" +"起動される。ハンドラーが 起動されるスレッドは、そのシグナルを禁止 (block) し" +"ていない メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。 スレッドグ" +"ループに属す複数のスレッドが B(2) を使って同じシグナルを待って" +"いる場合、 これらのスレッドの中から一つをカーネルが勝手に選択し、 そのスレッ" +"ドが B を使って送信されたシグナルを受信する。" #. type: TP -#: build/C/man2/clone.2:709 +#: build/C/man2/clone.2:741 #, no-wrap msgid "B (since Linux 2.5.46)" msgstr "B (Linux 2.5.46 以降)" #. type: Plain text -#: build/C/man2/clone.2:716 +#: build/C/man2/clone.2:748 msgid "" "If B is specified, then a tracing process cannot force " "B on this child process." @@ -1818,41 +1940,41 @@ msgstr "" "スに B を適用することができない。" #. type: TP -#: build/C/man2/clone.2:716 +#: build/C/man2/clone.2:748 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 2.2)" +msgstr "B (Linux 2.2 以降)" #. type: Plain text -#: build/C/man2/clone.2:728 +#: build/C/man2/clone.2:760 msgid "" "If B is set, the execution of the calling process is suspended " -"until the child releases its virtual memory resources via a call to B" -"(2) or B<_exit>(2) (as with B(2))." +"until the child releases its virtual memory resources via a call to " +"B(2) or B<_exit>(2) (as with B(2))." msgstr "" "B が設定された場合、 (B(2) と同様に) 子プロセスが " -"B(2) または B<_exit>(2) によって仮想メモリを解放するまで、呼び出し" -"元のプロセスの実行は停止される。" +"B(2) または B<_exit>(2) によって仮想メモリーを解放するまで、呼び出" +"し元のプロセスの実行は停止される。" #. type: Plain text -#: build/C/man2/clone.2:734 +#: build/C/man2/clone.2:766 msgid "" -"If B is not set then both the calling process and the child are " -"schedulable after the call, and an application should not rely on execution " -"occurring in any particular order." +"If B is not set, then both the calling process and the child " +"are schedulable after the call, and an application should not rely on " +"execution occurring in any particular order." msgstr "" "B が設定されていない場合、 B() 呼び出し後は、呼び出し元" "のプロセスと子プロセスの 両方がスケジュール対象となり、アプリケーションはこれ" "らのプロセスの 実行順序に依存しないようにすべきである。" #. type: TP -#: build/C/man2/clone.2:734 +#: build/C/man2/clone.2:766 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 2.0)" +msgstr "B (Linux 2.0 以降)" #. type: Plain text -#: build/C/man2/clone.2:747 +#: build/C/man2/clone.2:779 msgid "" "If B is set, the calling process and the child process run in the " "same memory space. In particular, memory writes performed by the calling " @@ -1860,14 +1982,14 @@ msgid "" "Moreover, any memory mapping or unmapping performed with B(2) or " "B(2) by the child or calling process also affects the other process." msgstr "" -"B が設定された場合、呼び出し元のプロセスと子プロセスは同じメモリ空" -"間で 実行される。特に、呼び出し元のプロセスや子プロセスの一方がメモリに 書き" -"込んだ内容はもう一方のプロセスからも見ることができる。さらに、 子プロセスや呼" -"び出し元のプロセスの一方が B(2) や B(2) を使ってメモリをマッ" -"プしたりアンマップした場合、 もう一方のプロセスにも影響が及ぶ。" +"B が設定された場合、呼び出し元のプロセスと子プロセスは同じメモリー" +"空間で 実行される。特に、呼び出し元のプロセスや子プロセスの一方がメモリーに " +"書き込んだ内容はもう一方のプロセスからも見ることができる。さらに、 子プロセス" +"や呼び出し元のプロセスの一方が B(2) や B(2) を使ってメモリー" +"をマップしたりアンマップした場合、 もう一方のプロセスにも影響が及ぶ。" #. type: Plain text -#: build/C/man2/clone.2:756 +#: build/C/man2/clone.2:788 msgid "" "If B is not set, the child process runs in a separate copy of the " "memory space of the calling process at the time of B(). Memory " @@ -1875,48 +1997,144 @@ msgid "" "affect the other, as with B(2)." msgstr "" "B が設定されていない場合、子プロセスは B() が実行された時点" -"での、親プロセスのメモリ空間をコピーした 別のメモリ空間で実行される。 一方の" -"プロセスが行ったメモリへの書き込みや ファイルのマップ/アンマップは、 B" -"(2) の場合と同様、もう一方のプロセスには影響しない。" +"での、親プロセスのメモリー空間をコピーした 別のメモリー空間で実行される。 一" +"方のプロセスが行ったメモリーへの書き込みや ファイルのマップ/アンマップは、 " +"B(2) の場合と同様、もう一方のプロセスには影響しない。" #. type: SS -#: build/C/man2/clone.2:756 +#: build/C/man2/clone.2:788 build/C/man2/sched_setaffinity.2:212 #, no-wrap -msgid "sys_clone" -msgstr "sys_clone" +msgid "C library/kernel ABI differences" +msgstr "C ライブラリとカーネル ABI の違い" + +#. type: Plain text +#: build/C/man2/clone.2:804 +msgid "" +"The raw B() system call corresponds more closely to B(2) in " +"that execution in the child continues from the point of the call. As such, " +"the I and I arguments of the B() wrapper function are " +"omitted. Furthermore, the argument order changes. The raw system call " +"interface on x86 and many other architectures is roughly:" +msgstr "" +"素の B システムコールは、より B(2) に近いかたちになっており、 子" +"プロセスの実行が呼び出しが行われた場所から続けられる。 そのため、 B() " +"ラッパー関数の引き数 I と I は省略される。 また、 引き数の順序も違っ" +"ている。 x86 と他の多くのアーキテクチャーにおける、 素のシステムコールのイン" +"ターフェースは、 おおまかには次のようになっている。" #. type: Plain text -#: build/C/man2/clone.2:773 +#: build/C/man2/clone.2:810 +#, no-wrap msgid "" -"The B system call corresponds more closely to B(2) in that " -"execution in the child continues from the point of the call. Thus, " -"B only requires the I and I arguments, which " -"have the same meaning as for B(). (Note that the order of these " -"arguments differs from B().)" +"BIB<, void *>IB<,>\n" +"B< void *>IB<, void *>IB<,>\n" +"B< struct pt_regs *>IB<);>\n" msgstr "" -"B システムコールは、より B(2) に近いかたちになっており、子" -"プロセスの実行が呼び出しが行われた場所から 続けられる。 そのため、 " -"B が必要とする引き数は I と I だけであり、それ" -"らは B() と同じ意味を持つ (これらの引き数の順番は B() とは異" -"なることに注意せよ)。" +"BIB<, void *>IB<,>\n" +"B< void *>IB<, void *>IB<,>\n" +"B< struct pt_regs *>IB<);>\n" #. type: Plain text -#: build/C/man2/clone.2:784 +#: build/C/man2/clone.2:821 msgid "" -"Another difference for B is that the I argument may " -"be zero, in which case copy-on-write semantics ensure that the child gets " -"separate copies of stack pages when either process modifies the stack. In " -"this case, for correct operation, the B option should not be " -"specified." +"Another difference for the raw system call is that the I " +"argument may be zero, in which case copy-on-write semantics ensure that the " +"child gets separate copies of stack pages when either process modifies the " +"stack. In this case, for correct operation, the B option should " +"not be specified." msgstr "" -"B のもう一つの違いは、 I 引き数がゼロでも良いことであ" -"る。この場合には、どちらかのプロセスが スタックを変更した時に、書き込み時コ" -"ピー (copy-on-write) 方式により 子プロセスがスタック・ページの独立したコピー" -"を得られることが保証される。 この場合、正常に動作させるためには、 " +"生のシステムコールのもう一つの違いは、 I 引き数がゼロでも良いこ" +"とである。この場合には、どちらかのプロセスが スタックを変更した時に、書き込み" +"時コピー (copy-on-write) 方式により 子プロセスがスタックページの独立したコ" +"ピーを得られることが保証される。 この場合、正常に動作させるためには、 " "B オプションを指定してはならない。" #. type: Plain text -#: build/C/man2/clone.2:792 +#: 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-" +"RISC, arc, Power PC, xtensa, and MIPS architectures, the order of the fourth " +"and fifth arguments is reversed. On the cris and s390 architectures, the " +"order of the first and second arguments is reversed." +msgstr "" +"いくつかのアーキテクチャーでは、システムコールの引き数の順序は上記とは異なっ" +"ている。 microblaze, ARM, ARM 64, PA-RISC, arc, Power PC, xtensa, MIPS アーキ" +"テクチャーでは、 4 番目と 5 番目の引き数の順番が逆である。 cris と s390 アー" +"キテクチャーでは、最初と 2 番目の引き数の順番が逆である。" + +#. type: SS +#: 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: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." +msgstr "" +"blackfin, m68k, sparc では引き数渡しの規約が上記の説明とは異なる。 詳細は、" +"カーネル (と glibc) のソースを参照のこと。" + +#. type: SS +#: build/C/man2/clone.2:833 +#, no-wrap +msgid "ia64" +msgstr "ia64" + +#. type: Plain text +#: build/C/man2/clone.2:835 +msgid "On ia64, a different interface is used:" +msgstr "ia64 では、別のインターフェースが使用される:" + +#. type: Plain text +#: build/C/man2/clone.2:842 +#, no-wrap +msgid "" +"BIB<)(void *), >\n" +"B< void *>IB<, size_t >IB<,>\n" +"B< int >IB<, void *>IB<, ... >\n" +"B< /* pid_t *>IB<, struct user_desc *>IB<, pid_t *>IB< */ );>\n" +msgstr "" +"BIB<)(void *), >\n" +"B< void *>IB<, size_t >IB<,>\n" +"B< int >IB<, void *>IB<, ... >\n" +"B< /* pid_t *>IB<, struct user_desc *>IB<, pid_t *>IB< */ );>\n" + +#. type: Plain text +#: 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 or I argument, and changes the order of the " +"arguments so that I is the first argument, and I is the last " +"argument." +msgstr "" +"上記のプロトタイプは glibc ラッパー関数用のものである。 素のシステムコールの" +"インターフェースには引き数 I と I がない。 また、引き数の順序が変わ" +"り、 I が最初の引き数で、 I が最後の引き数である。" + +#. type: Plain text +#: build/C/man2/clone.2:865 +msgid "" +"B<__clone2>() operates in the same way as B(), except that " +"I points to the lowest address of the child's stack area, " +"and I specifies the size of the stack pointed to by " +"I." +msgstr "" +"B<__clone2>() は B() と同じように動作するが、以下の点が異なる: " +"I は子プロセスのスタックエリアの最小のアドレスを指し、 " +"I は I が指し示すスタックエリアの大きさを示す。" + +#. type: SS +#: 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:873 msgid "" "In Linux 2.4 and earlier, B() does not take arguments I, " "I, and I." @@ -1927,7 +2145,7 @@ msgstr "" #. gettid(2) returns current->pid; #. getpid(2) returns current->tgid; #. type: Plain text -#: build/C/man2/clone.2:801 +#: 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 " @@ -1938,41 +2156,49 @@ msgstr "" "成されず、 I が適切に設定される。" #. type: SH -#: build/C/man2/clone.2:801 build/C/man2/sched_get_priority_max.2:97 -#: build/C/man3/sched_getcpu.3:45 build/C/man2/sched_rr_get_interval.2:81 -#: build/C/man2/sched_setaffinity.2:117 build/C/man2/sched_setparam.2:97 -#: build/C/man2/sched_setscheduler.2:433 build/C/man2/sched_yield.2:49 -#: build/C/man2/setns.2:73 build/C/man2/unshare.2:188 +#: 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:145 +#: build/C/man2/unshare.2:282 #, no-wrap msgid "ERRORS" msgstr "エラー" #. type: TP -#: build/C/man2/clone.2:802 +#: build/C/man2/clone.2:883 #, no-wrap msgid "B" msgstr "B" #. type: Plain text -#: build/C/man2/clone.2:805 -msgid "Too many processes are already running." -msgstr "すでに実行中のプロセスが多すぎる。" +#: build/C/man2/clone.2:887 +msgid "Too many processes are already running; see B(2)." +msgstr "すでに実行中のプロセスが多すぎる。 B(2) 参照。" #. type: TP -#: build/C/man2/clone.2:805 build/C/man2/clone.2:812 build/C/man2/clone.2:827 -#: build/C/man2/clone.2:835 build/C/man2/clone.2:843 build/C/man2/clone.2:851 -#: build/C/man2/clone.2:857 build/C/man2/clone.2:867 build/C/man2/clone.2:875 -#: build/C/man2/clone.2:883 build/C/man2/sched_get_priority_max.2:98 -#: build/C/man2/sched_rr_get_interval.2:85 -#: build/C/man2/sched_setaffinity.2:121 build/C/man2/sched_setaffinity.2:129 -#: build/C/man2/sched_setparam.2:98 build/C/man2/sched_setscheduler.2:434 -#: build/C/man2/setns.2:78 build/C/man2/unshare.2:189 +#: 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:276 build/C/man2/sched_setattr.2:300 +#: 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:150 build/C/man2/setns.2:155 build/C/man2/setns.2:159 +#: build/C/man2/setns.2:164 build/C/man2/setns.2:168 build/C/man2/setns.2:175 +#: build/C/man2/unshare.2:283 build/C/man2/unshare.2:287 #, no-wrap msgid "B" msgstr "B" #. type: Plain text -#: build/C/man2/clone.2:812 +#: build/C/man2/clone.2:894 msgid "" "B was specified, but B was not. (Since Linux 2.6.0-" "test6.)" @@ -1989,7 +2215,7 @@ msgstr "" #. was specified. #. (Since Linux 2.6.0-test6.) #. type: Plain text -#: build/C/man2/clone.2:827 +#: build/C/man2/clone.2:909 msgid "" "B was specified, but B was not. (Since Linux " "2.5.35.)" @@ -1997,29 +2223,46 @@ msgstr "" "B が指定されていたが、 B が指定されていなかっ" "た。 (Linux 2.5.35 以降)" +#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 #. type: Plain text -#: build/C/man2/clone.2:835 +#: build/C/man2/clone.2:918 msgid "Both B and B were specified in I." msgstr "B と B の両方が I に指定された。" +#. type: TP +#: build/C/man2/clone.2:918 +#, no-wrap +msgid "B (since Linux 3.9)" +msgstr "B (Linux 3.9 以降)" + +#. type: Plain text +#: build/C/man2/clone.2:926 +msgid "Both B and B were specified in I." +msgstr "B と B の両方が I に指定された。" + #. type: Plain text -#: build/C/man2/clone.2:843 +#: build/C/man2/clone.2:934 msgid "Both B and B were specified in I." msgstr "B と B の両方が I に指定された。" #. type: Plain text -#: build/C/man2/clone.2:851 -msgid "Both B and B were specified in I." -msgstr "B と B の両方が I に指定された。" +#: build/C/man2/clone.2:946 +msgid "" +"One (or both) of B or B and one (or both) of " +"B or B were specified in I." +msgstr "" +"B と B の一方 (もしくは両方) と、 " +"B と B の一方 (もしくは両方) が、 I に指" +"定された。" #. type: Plain text -#: build/C/man2/clone.2:857 +#: build/C/man2/clone.2:952 msgid "" "Returned by B() when a zero value is specified for I." msgstr "I にゼロを指定した場合に B() が返す。" #. type: Plain text -#: build/C/man2/clone.2:867 +#: build/C/man2/clone.2:962 msgid "" "B was specified in I, but the kernel was not configured " "with the B and B options." @@ -2028,7 +2271,7 @@ msgstr "" "B と B が有効になっていなかった。" #. type: Plain text -#: build/C/man2/clone.2:875 +#: build/C/man2/clone.2:970 msgid "" "B was specified in I, but the kernel was not configured " "with the B option." @@ -2037,7 +2280,7 @@ msgstr "" "B が有効になっていなかった。" #. type: Plain text -#: build/C/man2/clone.2:883 +#: build/C/man2/clone.2:978 msgid "" "B was specified in I, but the kernel was not configured " "with the B option." @@ -2046,7 +2289,7 @@ msgstr "" "B が有効になっていなかった。" #. type: Plain text -#: build/C/man2/clone.2:891 +#: build/C/man2/clone.2:986 msgid "" "B was specified in I, but the kernel was not configured " "with the B option." @@ -2055,31 +2298,34 @@ msgstr "" "B が有効になっていなかった。" #. type: TP -#: build/C/man2/clone.2:891 build/C/man2/setns.2:85 build/C/man2/unshare.2:193 +#: build/C/man2/clone.2:986 build/C/man2/setns.2:179 +#: build/C/man2/unshare.2:296 #, no-wrap msgid "B" msgstr "B" #. type: Plain text -#: build/C/man2/clone.2:896 +#: 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." msgstr "" "子プロセスのために確保すべきタスク構造体や、呼び出し元のコンテキストの 一部を" -"コピーするのに必要なメモリを十分に割り当てることができない。" +"コピーするのに必要なメモリーを十分に割り当てることができない。" #. type: TP -#: build/C/man2/clone.2:896 build/C/man2/clone.2:905 -#: build/C/man2/sched_setaffinity.2:136 build/C/man2/sched_setparam.2:102 -#: build/C/man2/sched_setscheduler.2:439 build/C/man2/setns.2:88 -#: build/C/man2/unshare.2:197 +#: 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:182 +#: build/C/man2/unshare.2:300 build/C/man2/unshare.2:303 #, no-wrap msgid "B" msgstr "B" #. type: Plain text -#: build/C/man2/clone.2:905 +#: build/C/man2/clone.2:1000 msgid "" "B, B, B, B, or " "B was specified by an unprivileged process (process without " @@ -2090,30 +2336,76 @@ msgstr "" "た。" #. type: Plain text -#: build/C/man2/clone.2:909 +#: build/C/man2/clone.2:1004 msgid "B was specified by a process other than process 0." msgstr "PID が 0 以外のプロセスによって B が指定された。" #. type: Plain text -#: build/C/man2/clone.2:916 +#: build/C/man2/clone.2:1012 build/C/man2/unshare.2:311 msgid "" -"There is no entry for B() in libc5. glibc2 provides B() as " -"described in this manual page." +"B was specified in I, 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(7))." msgstr "" -"libc5 には B() はない。glibc2 では B() が提供されており、この" -"マニュアルページに記載の通りである。" +"B が I に指定されたが、 呼び出し元の実効ユーザー ID も" +"しくは実効グループ ID が親名前空間にマッピングがない (B(7) " +"参照)。" + +#. type: TP +#: build/C/man2/clone.2:1012 build/C/man2/unshare.2:311 +#, no-wrap +msgid "B (since Linux 3.9)" +msgstr "B (Linux 3.9 以降)" +#. commit 3151527ee007b73a0ebd296010f1c0454a919c7d +#. FIXME What is the rationale for this restriction? #. type: Plain text -#: build/C/man2/clone.2:923 +#: build/C/man2/clone.2:1022 build/C/man2/unshare.2:321 msgid "" -"The B() and B calls are Linux-specific and should not be " -"used in programs intended to be portable." +"B was specified in I 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 "" -"B() と B コールは Linux 特有であり、移植を考慮したプログラ" -"ムでは使用すべき ではない。" +"B が I に指定され、 呼び出し元が chroot された環境にい" +"る (すなわち、呼び出し元の root ディレクトリが呼び出し元が属するマウント名前" +"空間の root ディレクトリに一致しない)。" + +#. type: TP +#: build/C/man2/clone.2:1022 build/C/man2/unshare.2:321 +#, no-wrap +msgid "B (since Linux 3.11)" +msgstr "B (Linux 3.11 以降)" #. type: Plain text -#: build/C/man2/clone.2:933 +#: build/C/man2/clone.2:1031 build/C/man2/unshare.2:330 +msgid "" +"B was specified in I, and the call would cause the " +"limit on the number of nested user namespaces to be exceeded. See " +"B(7)." +msgstr "" +"B が I に指定されており、 この呼び出しによりネストされ" +"たユーザー名前空間数の上限を超えてしまう。 B(7) を参照。" + +#. type: Plain text +#: build/C/man2/clone.2:1038 +msgid "" +"There is no entry for B() in libc5. glibc2 provides B() as " +"described in this manual page." +msgstr "" +"libc5 には B() はない。glibc2 では B() が提供されており、この" +"マニュアルページに記載の通りである。" + +#. type: Plain text +#: build/C/man2/clone.2:1042 +msgid "" +"B() is Linux-specific and should not be used in programs intended to " +"be portable." +msgstr "" +"B() は Linux 特有であり、移植を考慮したプログラムでは使用すべき ではな" +"い。" + +#. type: Plain text +#: build/C/man2/clone.2:1052 msgid "" "In the kernel 2.4.x series, B generally does not make the " "parent of the new thread the same as the parent of the calling process. " @@ -2126,7 +2418,7 @@ msgstr "" "グを指定すると、 暗黙のうちに CLONE_PARENT フラグを指定したことになる。" #. type: Plain text -#: build/C/man2/clone.2:943 +#: build/C/man2/clone.2:1062 msgid "" "For a while there was B (introduced in 2.5.32): parent wants " "no child-exit signal. In 2.6.2 the need to give this together with " @@ -2138,7 +2430,7 @@ msgstr "" "要はなくなった。 このフラグはまだ定義されているが、何の効果もない。" #. type: Plain text -#: build/C/man2/clone.2:948 +#: build/C/man2/clone.2:1067 msgid "" "On i386, B() should not be called through vsyscall, but directly " "through I." @@ -2147,39 +2439,7 @@ msgstr "" "呼び出すべきである。" #. type: Plain text -#: build/C/man2/clone.2:950 -msgid "On ia64, a different system call is used:" -msgstr "ia64 では、別のシステムコールが使用される:" - -#. type: Plain text -#: build/C/man2/clone.2:957 -#, no-wrap -msgid "" -"BIB<)(void *), >\n" -"B< void *>IB<, size_t >IB<,>\n" -"B< int >IB<, void *>IB<, ... >\n" -"B< /* pid_t *>IB<, struct user_desc *>IB<, pid_t *>IB< */ );>\n" -msgstr "" -"BIB<)(void *), >\n" -"B< void *>IB<, size_t >IB<,>\n" -"B< int >IB<, void *>IB<, ... >\n" -"B< /* pid_t *>IB<, struct user_desc *>IB<, pid_t *>IB< */ );>\n" - -#. type: Plain text -#: build/C/man2/clone.2:970 -msgid "" -"The B<__clone2>() system call operates in the same way as B(), " -"except that I points to the lowest address of the child's " -"stack area, and I specifies the size of the stack pointed to by " -"I." -msgstr "" -"B<__clone2>() システムコールは B() と同じように動作するが、以下の点" -"が異なる: I は子プロセスのスタックエリアの最小のアドレスを" -"指し、 I は I が指し示すスタックエリアの大きさ" -"を示す。" - -#. type: Plain text -#: build/C/man2/clone.2:1001 +#: build/C/man2/clone.2:1098 msgid "" "Versions of the GNU C library that include the NPTL threading library " "contain a wrapper function for B(2) that performs caching of PIDs. " @@ -2196,384 +2456,1025 @@ msgid "" "also does not occur if the I argument includes B.) To get " "the truth, it may be necessary to use code such as the following:" msgstr "" -"NPTL スレッド・ライブラリを含んでいる GNU C ライブラリのいくつかのバージョン " -"には、 B(2) のラッパー関数が含まれており、このラッパー関数は PID を" -"キャッシュする。 このキャッシュ処理が正しく動作するためには glibc の B" -"() のラッパー関数での助けが必要だが、現状の実装では、 ある状況下において" -"キャッシュが最新とならない可能性がある。 特に、 B() の呼び出し直後に" -"シグナルが子プロセスに配送された場合に、 そのシグナルに対するハンドラ内で " -"B(2) を呼び出すと、それまでに clone のラッパー関数が子プロセスの " +"NPTL スレッドライブラリを含んでいる GNU C ライブラリのいくつかのバージョン に" +"は、 B(2) のラッパー関数が含まれており、このラッパー関数は PID を" +"キャッシュする。 このキャッシュ処理が正しく動作するためには glibc の " +"B() のラッパー関数での助けが必要だが、現状の実装では、 ある状況下にお" +"いてキャッシュが最新とならない可能性がある。 特に、 B() の呼び出し直" +"後にシグナルが子プロセスに配送された場合に、 そのシグナルに対するハンドラー内" +"で B(2) を呼び出すと、それまでに clone のラッパー関数が子プロセスの " "PID キャッシュを 更新する機会が得られていなければ、呼び出し元プロセス (\"親プ" "ロセス\") の PID が 返される可能性がある。 (この議論では、子プロセスが " "B を使って作成された場合のことは無視している。 子プロセスが " "B を作って作成された場合には、 呼び出し元と子プロセスは同じス" -"レッド・グループに属すので、 B(2) は子プロセスと B() を呼び" -"出したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 " +"レッドグループに属すので、 B(2) は子プロセスと B() を呼び出" +"したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 " "(stale-cache problem) は、 I に B が含まれている場合にも発生" "しない。) 本当の値を得るためには、次のようなコードを使う必要があるかもしれな" "い。" #. type: Plain text -#: build/C/man2/clone.2:1004 +#: build/C/man2/clone.2:1101 #, no-wrap msgid " #include Esyscall.hE\n" msgstr " #include Esyscall.hE\n" #. type: Plain text -#: build/C/man2/clone.2:1006 +#: build/C/man2/clone.2:1103 #, no-wrap msgid " pid_t mypid;\n" msgstr " pid_t mypid;\n" #. type: Plain text -#: build/C/man2/clone.2:1008 +#: build/C/man2/clone.2:1105 #, no-wrap msgid " mypid = syscall(SYS_getpid);\n" msgstr " mypid = syscall(SYS_getpid);\n" #. type: Plain text -#: build/C/man2/clone.2:1023 +#: build/C/man2/clone.2:1119 msgid "" -"B(2), B(2), B(2), B(2), B(2), " -"B(2), B(2), B(2), B(2), " -"B(7), B(7)" +"The following program demonstrates the use of B() to create a child " +"process that executes in a separate UTS namespace. The child changes the " +"hostname in its UTS namespace. Both parent and child then display the " +"system hostname, making it possible to see that the hostname differs in the " +"UTS namespaces of the parent and child. For an example of the use of this " +"program, see B(2)." msgstr "" -"B(2), B(2), B(2), B(2), B(2), " -"B(2), B(2), B(2), B(2), " -"B(7), B(7)" - -#. type: TH -#: build/C/man2/sched_get_priority_max.2:30 -#, no-wrap -msgid "SCHED_GET_PRIORITY_MAX" -msgstr "SCHED_GET_PRIORITY_MAX" +"以下のプログラムは、 別の UTS 名前空間で動作する子プロセスを B() を" +"使って作成する例である。 子プロセスは、自分の UTS 名前空間においてホスト名を" +"変更する。 それから、親プロセスと子プロセスの両方でシステムのホスト名を表示" +"し、 親プロセスと子プロセスの UTS 名前空間でホスト名が異なることを確認する。 " +"このプログラムの使用方法については B(2) を参照。" -#. type: TH -#: build/C/man2/sched_get_priority_max.2:30 build/C/man2/sched_setparam.2:31 +#. type: SS +#: build/C/man2/clone.2:1119 build/C/man2/setns.2:255 +#: build/C/man2/unshare.2:396 #, no-wrap -msgid "2006-03-23" -msgstr "2006-03-23" +msgid "Program source" +msgstr "プログラムのソース" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:33 +#: build/C/man2/clone.2:1129 +#, no-wrap msgid "" -"sched_get_priority_max, sched_get_priority_min - get static priority range" +"#define _GNU_SOURCE\n" +"#include Esys/wait.hE\n" +"#include Esys/utsname.hE\n" +"#include Esched.hE\n" +"#include Estring.hE\n" +"#include Estdio.hE\n" +"#include Estdlib.hE\n" +"#include Eunistd.hE\n" msgstr "" -"sched_get_priority_max, sched_get_priority_min - 静的プライオリティの範囲を取" -"得する" +"#define _GNU_SOURCE\n" +"#include Esys/wait.hE\n" +"#include Esys/utsname.hE\n" +"#include Esched.hE\n" +"#include Estring.hE\n" +"#include Estdio.hE\n" +"#include Estdlib.hE\n" +"#include Eunistd.hE\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:35 -#: build/C/man2/sched_rr_get_interval.2:35 build/C/man2/sched_yield.2:35 -msgid "B<#include Esched.hE>" -msgstr "B<#include Esched.hE>" +#: build/C/man2/clone.2:1132 build/C/man2/setns.2:266 +#: build/C/man2/unshare.2:415 +#, no-wrap +msgid "" +"#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \\e\n" +" } while (0)\n" +msgstr "" +"#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \\e\n" +" } while (0)\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:37 -msgid "BIB<);>" -msgstr "BIB<);>" +#: build/C/man2/clone.2:1137 +#, no-wrap +msgid "" +"static int /* Start function for cloned child */\n" +"childFunc(void *arg)\n" +"{\n" +" struct utsname uts;\n" +msgstr "" +"static int /* clone された子プロセスの開始関数 */\n" +"childFunc(void *arg)\n" +"{\n" +" struct utsname uts;\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:39 -msgid "BIB<);>" -msgstr "BIB<);>" +#: build/C/man2/clone.2:1139 +#, no-wrap +msgid " /* Change hostname in UTS namespace of child */\n" +msgstr " /* 子プロセスの UTS 名前空間でホスト名を変更する */\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:55 +#: build/C/man2/clone.2:1142 +#, no-wrap msgid "" -"B() returns the maximum priority value that can be " -"used with the scheduling algorithm identified by I. " -"B() returns the minimum priority value that can be " -"used with the scheduling algorithm identified by I. Supported " -"I values are B, B, B, and " -"B. Further details about these policies can be found in " -"B(2)." +" if (sethostname(arg, strlen(arg)) == -1)\n" +" errExit(\"sethostname\");\n" msgstr "" -"B() はI によって指定されたスケジューリングの" -"アルゴリズムで 使用されるプライオリティの最大値を返す。 " -"B() はI によって指定されたスケジューリングの" -"アルゴリズムで 使用されるプライオリティの最小値を返す。 サポートされる " -"I の値は B、 B、 B、 " -"B である。これらのスケジューリング方針に関する詳細は " -"B(2) に書かれている。" +" if (sethostname(arg, strlen(arg)) == -1)\n" +" errExit(\"sethostname\");\n" + +#. type: Plain text +#: build/C/man2/clone.2:1144 +#, no-wrap +msgid " /* Retrieve and display hostname */\n" +msgstr " /* ホスト名を取得し表示する */\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:64 +#: build/C/man2/clone.2:1148 +#, no-wrap msgid "" -"Processes with numerically higher priority values are scheduled before " -"processes with numerically lower priority values. Thus, the value returned " -"by B() will be greater than the value returned by " -"B()." +" if (uname(&uts) == -1)\n" +" errExit(\"uname\");\n" +" printf(\"uts.nodename in child: %s\\en\", uts.nodename);\n" msgstr "" -"数値的に大きなプライオリティ値を持つプロセスは小さな プライオリティ値を持つプ" -"ロセスより前にスケジュールされる。 このため B() が返" -"す値は B() が返す値よりも大きい。" +" if (uname(&uts) == -1)\n" +" errExit(\"uname\");\n" +" printf(\"uts.nodename in child: %s\\en\", uts.nodename);\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:70 +#: build/C/man2/clone.2:1152 +#, no-wrap msgid "" -"Linux allows the static priority value range 1 to 99 for B and " -"B and the priority 0 for B and B. " -"Scheduling priority ranges for the various policies are not alterable." +" /* Keep the namespace open for a while, by sleeping.\n" +" This allows some experimentation--for example, another\n" +" process might join the namespace. */\n" msgstr "" -"Linux では B と B では 1 から 99 の範囲の 静的プライオ" -"リティーを持ち、B と B では プライオリティとして 0 " -"を持つ。 それぞれの方針のスケジューリング・プライオリティの範囲は 変更するこ" -"とができない。" +" /* sleep を使ってしばらく名前空間をオープンされたままにする。\n" +" これにより実験を行うことができる -- 例えば、\n" +" 別のプロセスがこの名前空間に参加するなど。 */\n" + +#. type: Plain text +#: build/C/man2/clone.2:1154 +#, no-wrap +msgid " sleep(200);\n" +msgstr " sleep(200);\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:79 +#: build/C/man2/clone.2:1157 +#, no-wrap msgid "" -"The range of scheduling priorities may vary on other POSIX systems, thus it " -"is a good idea for portable applications to use a virtual priority range and " -"map it to the interval given by B() and " -"B(). POSIX.1-2001 requires a spread of at least 32 " -"between the maximum and the minimum values for B and B." +" return 0; /* Child terminates now */\n" +"}\n" msgstr "" -"スケジューリング・プライオリティの範囲は他の POSIX システムと 異なっているか" -"もしれない。それで、移植性(portable)のある アプリケーションでは仮想的な範囲を" -"用い B() と B() で与えられ" -"た間隔にマップして使用することはいい考えである。 POSIX.1-2001 では " -"B と B における 最大値と最小値の間隔を少なくとも 32 に" -"することを要求している。" +" return 0; /* 子プロセスを終了する */\n" +"}\n" + +#. type: Plain text +#: build/C/man2/clone.2:1159 +#, 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/sched_get_priority_max.2:87 +#: build/C/man2/clone.2:1167 +#, no-wrap msgid "" -"POSIX systems on which B() and " -"B() are available define " -"B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" char *stack; /* Start of stack buffer */\n" +" char *stackTop; /* End of stack buffer */\n" +" pid_t pid;\n" +" struct utsname uts;\n" msgstr "" -"POSIX システムでは B() と B" -"() は Iunistd.hE> に B<_POSIX_PRIORITY_SCHEDULING> が定義されてい" -"る場合にのみ使用可能である。" +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" char *stack; /* スタックバッファーの先頭 */\n" +" char *stackTop; /* スタックバッファーの末尾 */\n" +" pid_t pid;\n" +" struct utsname uts;\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:97 +#: build/C/man2/clone.2:1172 +#, no-wrap msgid "" -"On success, B() and B() " -"return the maximum/minimum priority value for the named scheduling policy. " -"On error, -1 is returned, and I is set appropriately." +" if (argc E 2) {\n" +" fprintf(stderr, \"Usage: %s Echild-hostnameE\\en\", argv[0]);\n" +" exit(EXIT_SUCCESS);\n" +" }\n" msgstr "" -"成功した場合は B() と B() " -"は指定されたスケジューリング方針のプライオリティの最大値/最小値を返す。 エ" -"ラーの場合は -1 が返され、 I が適切に設定される。" +" if (argc E 2) {\n" +" fprintf(stderr, \"Usage: %s Echild-hostnameE\\en\", argv[0]);\n" +" exit(EXIT_SUCCESS);\n" +" }\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:101 -msgid "The argument I does not identify a defined scheduling policy." -msgstr "引き数 I が定義されているスケジューリング方針と一致しない。" +#: build/C/man2/clone.2:1174 +#, no-wrap +msgid " /* Allocate stack for child */\n" +msgstr " /* 子プロセス用のスタックを割り当てる */\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:103 -#: build/C/man2/sched_rr_get_interval.2:97 build/C/man2/sched_setparam.2:113 -#: build/C/man2/sched_yield.2:55 -msgid "POSIX.1-2001." -msgstr "POSIX.1-2001." +#: build/C/man2/clone.2:1179 +#, no-wrap +msgid "" +" stack = malloc(STACK_SIZE);\n" +" if (stack == NULL)\n" +" errExit(\"malloc\");\n" +" stackTop = stack + STACK_SIZE; /* Assume stack grows downward */\n" +msgstr "" +" stack = malloc(STACK_SIZE);\n" +" if (stack == NULL)\n" +" errExit(\"malloc\");\n" +" stackTop = stack + STACK_SIZE; /* スタックは下方向に伸びるものとする */\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:110 +#: build/C/man2/clone.2:1182 +#, no-wrap msgid "" -"B(2), B(2), B(2), " -"B(2), B(2), B(2)" +" /* Create child that has its own UTS namespace;\n" +" child commences execution in childFunc() */\n" msgstr "" -"B(2), B(2) B(2), " -"B(2), B(2), B(2)," +" /* 自分専用の UTS 名前空間を持つ子プロセスを作成する;\n" +" 子プロセスは childFunc() の実行を開始する */\n" #. type: Plain text -#: build/C/man2/sched_get_priority_max.2:112 -#: build/C/man2/sched_rr_get_interval.2:131 build/C/man2/sched_setparam.2:126 -#: build/C/man2/sched_setscheduler.2:538 build/C/man2/sched_yield.2:84 +#: build/C/man2/clone.2:1187 +#, no-wrap msgid "" -"I by Bill O. Gallmeister, O'Reilly " -"& Associates, Inc., ISBN 1-56592-074-0" +" pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);\n" +" if (pid == -1)\n" +" errExit(\"clone\");\n" +" printf(\"clone() returned %ld\\en\", (long) pid);\n" msgstr "" -"I by Bill O. Gallmeister, O'Reilly " -"& Associates, Inc., ISBN 1-56592-074-0" +" pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);\n" +" if (pid == -1)\n" +" errExit(\"clone\");\n" +" printf(\"clone() returned %ld\\en\", (long) pid);\n" -#. type: TH -#: build/C/man3/sched_getcpu.3:24 +#. type: Plain text +#: build/C/man2/clone.2:1189 #, no-wrap -msgid "SCHED_GETCPU" -msgstr "SCHED_GETCPU" +msgid " /* Parent falls through to here */\n" +msgstr " /* 親プロセスの実行はここに来る */\n" -#. type: TH -#: build/C/man3/sched_getcpu.3:24 +#. type: Plain text +#: build/C/man2/clone.2:1191 #, no-wrap -msgid "2010-10-31" -msgstr "2010-10-31" +msgid " sleep(1); /* Give child time to change its hostname */\n" +msgstr " sleep(1); /* 子プロセスがホスト名を変更する時間を与える */\n" #. type: Plain text -#: build/C/man3/sched_getcpu.3:27 -msgid "sched_getcpu - determine CPU on which the calling thread is running" -msgstr "sched_getcpu - 呼び出したスレッドが実行されている CPU を知る" +#: build/C/man2/clone.2:1194 +#, no-wrap +msgid "" +" /* Display hostname in parent\\(aqs UTS namespace. This will be\n" +" different from hostname in child\\(aqs UTS namespace. */\n" +msgstr "" +" /* 親プロセスの UTS 名前空間でのホスト名を表示する;\n" +" これは子プロセスの UTS 名前空間でのホスト名とは異なる */\n" -#. Really:_BSD_SOURCE || _SVID_SOURCE #. type: Plain text -#: build/C/man3/sched_getcpu.3:32 +#: build/C/man2/clone.2:1198 #, no-wrap msgid "" -"B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n" -"B<#include Esched.hE>\n" +" if (uname(&uts) == -1)\n" +" errExit(\"uname\");\n" +" printf(\"uts.nodename in parent: %s\\en\", uts.nodename);\n" msgstr "" -"B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */\n" -"B<#include Esched.hE>\n" +" if (uname(&uts) == -1)\n" +" errExit(\"uname\");\n" +" printf(\"uts.nodename in parent: %s\\en\", uts.nodename);\n" #. type: Plain text -#: build/C/man3/sched_getcpu.3:34 +#: build/C/man2/clone.2:1202 #, no-wrap -msgid "B\n" -msgstr "B\n" +msgid "" +" if (waitpid(pid, NULL, 0) == -1) /* Wait for child */\n" +" errExit(\"waitpid\");\n" +" printf(\"child has terminated\\en\");\n" +msgstr "" +" if (waitpid(pid, NULL, 0) == -1) /* 子プロセスを待つ */\n" +" errExit(\"waitpid\");\n" +" printf(\"child has terminated\\en\");\n" #. type: Plain text -#: build/C/man3/sched_getcpu.3:38 +#: build/C/man2/clone.2:1205 +#, no-wrap msgid "" -"B() returns the number of the CPU on which the calling thread " -"is currently executing." +" exit(EXIT_SUCCESS);\n" +"}\n" msgstr "" -"B() は、呼び出したスレッドが現在実行されている CPU の番号を返" -"す。" +" exit(EXIT_SUCCESS);\n" +"}\n" #. type: Plain text -#: build/C/man3/sched_getcpu.3:45 +#: build/C/man2/clone.2:1221 msgid "" -"On success, B() returns a nonnegative CPU number. On error, " -"-1 is returned and I is set to indicate the error." +"B(2), B(2), B(2), B(2), B(2), " +"B(2), B(2), B(2), B(2), " +"B(2), B(2), B(7), B(7), " +"B(7)" msgstr "" -"成功すると、 B() は非負の CPU 番号を返す。 エラーの場合、-1 を" -"返し、 I にエラーを示す値を設定する。" +"B(2), B(2), B(2), B(2), B(2), " +"B(2), B(2), B(2), B(2), " +"B(2), B(2), B(7), B(7), " +"B(7)" -#. type: TP -#: build/C/man3/sched_getcpu.3:46 build/C/man2/sched_rr_get_interval.2:88 +#. type: TH +#: build/C/man2/kcmp.2:28 #, no-wrap -msgid "B" -msgstr "B" +msgid "KCMP" +msgstr "KCMP" -#. type: Plain text -#: build/C/man3/sched_getcpu.3:50 -msgid "This kernel does not implement B(2)." -msgstr "このカーネルでは B(2) が実装されていない。" - -#. type: Plain text -#: build/C/man3/sched_getcpu.3:52 -msgid "This function is available since glibc 2.6." -msgstr "この関数は glibc 2.6 以降で利用可能である。" +#. type: TH +#: build/C/man2/kcmp.2:28 +#, no-wrap +msgid "2013-12-08" +msgstr "2013-12-08" #. type: Plain text -#: build/C/man3/sched_getcpu.3:55 -msgid "B() is glibc specific." -msgstr "B() は glibc 固有である。" +#: build/C/man2/kcmp.2:31 +msgid "" +"kcmp - compare two processes to determine if they share a kernel resource" +msgstr "kcmp - 二つのプロセスが同じカーネルリソースを共有しているかを比較する" #. type: Plain text -#: build/C/man3/sched_getcpu.3:57 -msgid "The call" -msgstr "呼び出し" +#: build/C/man2/kcmp.2:34 +#, no-wrap +msgid "B<#include Elinux/kcmp.hE>\n" +msgstr "B<#include Elinux/kcmp.hE>\n" #. type: Plain text -#: build/C/man3/sched_getcpu.3:61 +#: build/C/man2/kcmp.2:37 #, no-wrap -msgid "cpu = sched_getcpu();\n" -msgstr "cpu = sched_getcpu();\n" +msgid "" +"BIB<, pid_t >IB<, int >IB<,>\n" +"B< unsigned long >IB<, unsigned long >IB<);>\n" +msgstr "" +"BIB<, pid_t >IB<, int >IB<,>\n" +"B< unsigned long >IB<, unsigned long >IB<);>\n" #. type: Plain text -#: build/C/man3/sched_getcpu.3:67 -msgid "is equivalent to the following B(2) call:" -msgstr "は、以下の B(2) 呼び出しと等価である。" +#: build/C/man2/kcmp.2:41 +msgid "I: There is no glibc wrapper for this system call; see NOTES." +msgstr "" +"I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節" +"を参照。" #. type: Plain text -#: build/C/man3/sched_getcpu.3:73 -#, no-wrap +#: build/C/man2/kcmp.2:50 msgid "" -"int c, s;\n" -"s = getcpu(&c, NULL, NULL);\n" -"cpu = (s == -1) ? s : c;\n" +"The B() system call can be used to check whether the two processes " +"identified by I and I share a kernel resource such as virtual " +"memory, file descriptors, and so on." msgstr "" -"int c, s;\n" -"s = getcpu(&c, NULL, NULL);\n" -"cpu = (s == -1) ? s : c;\n" +"システムコール B() を使うと、 ID が I と I の二つのプロセス" +"が、 仮想メモリーやファイルディスクリプターなどの、 同じカーネルリソースを共" +"有しているかどうかを検査できる。" #. type: Plain text -#: build/C/man3/sched_getcpu.3:76 -msgid "B(2)" -msgstr "B(2)" +#: build/C/man2/kcmp.2:55 +msgid "" +"The I argument specifies which resource is to be compared in the two " +"processes. It has one of the following values:" +msgstr "" +"I 引き数は 2 つのプロセス間でどのリソースを比較するかを指定する。 以下" +"のいずれかの値を指定する。" -#. type: TH -#: build/C/man2/sched_rr_get_interval.2:30 +#. type: TP +#: build/C/man2/kcmp.2:55 #, no-wrap -msgid "SCHED_RR_GET_INTERVAL" -msgstr "SCHED_RR_GET_INTERVAL" - -#. type: TH -#: build/C/man2/sched_rr_get_interval.2:30 -#, fuzzy, no-wrap -#| msgid "2011-10-04" -msgid "2011-10-16" -msgstr "2011-10-04" +msgid "B" +msgstr "B" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:33 -msgid "sched_rr_get_interval - get the SCHED_RR interval for the named process" -msgstr "sched_rr_get_interval - 指定されたプロセスの SCHED_RR 間隔を取得する" +#: build/C/man2/kcmp.2:67 +msgid "" +"Check whether a file descriptor I in the process I refers to the " +"same open file description (see B(2)) as file descriptor I in " +"the process I." +msgstr "" +"プロセス I のファイルディスクリプター I が、 プロセス I の" +"ファイルディスクリプター I と同じオープンファイル記述 (open file " +"description) を参照しているかを検査する。" + +#. type: TP +#: build/C/man2/kcmp.2:67 +#, no-wrap +msgid "B" +msgstr "B" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:37 +#: build/C/man2/kcmp.2:75 msgid "" -"BIB<, struct timespec * >IB<);>" +"Check whether the process share the same set of open file descriptors. The " +"arguments I and I are ignored." msgstr "" -"BIB<, struct timespec *>IB<);>" +"二つのプロセスが同じオープンファイル記述の集合を共有しているかを検査する。 引" +"き数 I と I は無視される。" + +#. type: TP +#: build/C/man2/kcmp.2:75 +#, no-wrap +msgid "B" +msgstr "B" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:48 -#, fuzzy -#| msgid "" -#| "B() writes into the I structure pointed " -#| "to by I the round-robin time quantum for the process identified by " -#| "I." +#: build/C/man2/kcmp.2:84 msgid "" -"B() writes into the I structure pointed to " -"by I the round-robin time quantum for the process identified by I. " -"The specified process should be running under the B scheduling " -"policy." +"Check whether the processes share the same filesystem information (i.e., " +"file mode creation mask, working directory, and filesystem root). The " +"arguments I and I are ignored." msgstr "" -"B() は I で指定された I 構造体に " -"I で指定されたプロセスのラウンド・ロビン時間量 (round robin time " -"quantum) を書き込む。" +"二つのプロセスが同じファイルシステム情報 (すなわち、ファイルのモード作成マス" +"ク、作業ディレクトリ、ファイルシステムのルート) を共有しているかを検査する。 " +"引き数 I と I は無視される。" -#. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:52 -msgid "The I structure has the following form:" -msgstr "I 構造体は以下の通りである:" +#. type: TP +#: build/C/man2/kcmp.2:84 +#, no-wrap +msgid "B" +msgstr "B" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:59 -#, no-wrap +#: build/C/man2/kcmp.2:92 msgid "" -"struct timespec {\n" -" time_t tv_sec; /* seconds */\n" -" long tv_nsec; /* nanoseconds */\n" -"};\n" +"Check whether the processes share I/O context. The arguments I and " +"I are ignored." msgstr "" -"struct timespec {\n" -" time_t tv_sec; /* seconds */\n" -" long tv_nsec; /* nanoseconds */\n" -"};\n" +"二つのプロセスが I/O コンテキストを共有しているかを検査する。 引き数 I " +"と I は無視される。" -# -#. FIXME . On Linux, sched_rr_get_interval() -#. returns the timeslice for SCHED_OTHER processes -- this timeslice +#. type: TP +#: build/C/man2/kcmp.2:92 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/kcmp.2:100 +msgid "" +"Check whether the processes share the same table of signal dispositions. " +"The arguments I and I are ignored." +msgstr "" +"二つのプロセスがシグナル配送 (disposition) テーブルを共有しているかを検査す" +"る。 引き数 I と I は無視される。" + +#. type: TP +#: build/C/man2/kcmp.2:100 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/kcmp.2:109 +msgid "" +"Check whether the processes share the same list of System\\ V semaphore undo " +"operations. The arguments I and I are ignored." +msgstr "" +"二つのプロセスが同じ System\\ V セマフォ undo 操作のリストを共有しているかを" +"検査する。 引き数 I と I は無視される。" + +#. type: TP +#: build/C/man2/kcmp.2:109 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/kcmp.2:117 +msgid "" +"Check whether the processes share the same address space. The arguments " +"I and I are ignored." +msgstr "" +"二つのプロセスが同じアドレス空間を共有しているかを検査する。 引き数 I " +"と I は無視される。" + +#. type: Plain text +#: build/C/man2/kcmp.2:127 +msgid "" +"Note the B() is not protected against false positives which may occur " +"if tasks are running. One should stop tasks by sending B (see " +"B(7)) prior to inspection with this system call to obtain " +"meaningful results." +msgstr "" +"B() には、タスクが実行されている場合に起こり得る誤判定 (false " +"positive) に関する保護はない。 ということは、 意味のある結果を得るためには、 " +"このシステムコールで検査を行う前に、 B を送信してタスクを停止すべき" +"だということだ (B(7) 参照)。" + +#. type: Plain text +#: build/C/man2/kcmp.2:133 +msgid "" +"The return value of a successful call to B() is simply the result of " +"arithmetic comparison of kernel pointers (when the kernel compares " +"resources, it uses their memory addresses)." +msgstr "" +"B() の呼び出しが成功した場合の返り値は、単にカーネルポインターを数値で" +"比較した結果となる (カーネルはリソースを比較する際、リソースのメモリーアドレ" +"スを使用する)。" + +#. type: Plain text +#: build/C/man2/kcmp.2:141 +msgid "" +"The easiest way to explain is to consider an example. Suppose that I " +"and I are the addresses of appropriate resources, then the return value " +"is one of the following:" +msgstr "" +"これを説明するには、例を見るのが一番簡単である。 I と I を適切なリ" +"ソースのアドレスとすると、 返り値は以下のいずれか一つとなる。" + +#. type: IP +#: build/C/man2/kcmp.2:142 +#, no-wrap +msgid "0" +msgstr "0" + +#. type: Plain text +#: build/C/man2/kcmp.2:147 +msgid "" +"I is equal to I; in other words, the two processes share the " +"resource." +msgstr "" +"I は I と等しい。言い換えれば、二つのプロセスはそのリソースを共有して" +"いる。" + +#. type: IP +#: build/C/man2/kcmp.2:147 +#, no-wrap +msgid "1" +msgstr "1" + +#. type: Plain text +#: build/C/man2/kcmp.2:151 +msgid "I is less than I." +msgstr "I は I より小さい。" + +#. type: IP +#: build/C/man2/kcmp.2:151 +#, no-wrap +msgid "2" +msgstr "2" + +#. type: Plain text +#: build/C/man2/kcmp.2:155 +msgid "I is greater than I." +msgstr "I は I より大きい。" + +#. type: IP +#: build/C/man2/kcmp.2:155 +#, no-wrap +msgid "3" +msgstr "3" + +#. type: Plain text +#: build/C/man2/kcmp.2:160 +msgid "I is not equal to I, but ordering information is unavailable." +msgstr "I は I と等しくないが、順序情報がない。" + +#. type: Plain text +#: build/C/man2/kcmp.2:165 +msgid "On error, -1 is returned, and I is set appropriately." +msgstr "エラーの場合は -1 が返され、 I が適切に設定される。" + +#. type: Plain text +#: build/C/man2/kcmp.2:170 +msgid "" +"B() was designed to return values suitable for sorting. This is " +"particularly handy if one needs to compare a large number of file " +"descriptors." +msgstr "" +"B() は、ソートに適した値を返すように設計された。 大量のファイルディスク" +"リプターを比較する必要がある場合に、特に役に立つ。" + +#. type: TP +#: build/C/man2/kcmp.2:171 build/C/man2/setns.2:146 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/kcmp.2:181 +msgid "" +"I is B and I or I is not an open file descriptor." +msgstr "" +"I が B で、かつ I か I がオープンファイル記述でな" +"い。" + +#. type: Plain text +#: build/C/man2/kcmp.2:185 +msgid "I is invalid." +msgstr "I が無効である。" + +#. type: Plain text +#: build/C/man2/kcmp.2:191 +msgid "" +"Insufficient permission to inspect process resources. The B " +"capability is required to inspect processes that you do not own." +msgstr "" +"プロセスのリソースを検査するのに十分な許可がない。 自分が所有していないプロセ" +"スを検査するためには B ケーパビリティが必要である。" + +#. type: TP +#: build/C/man2/kcmp.2:191 build/C/man2/sched_rr_get_interval.2:90 +#: build/C/man2/sched_setaffinity.2:145 build/C/man2/sched_setattr.2:284 +#: build/C/man2/sched_setparam.2:116 build/C/man2/sched_setscheduler.2:167 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/kcmp.2:198 +msgid "Process I or I does not exist." +msgstr "プロセス I か I が存在しない。" + +#. type: Plain text +#: build/C/man2/kcmp.2:202 +msgid "The B() system call first appeared in Linux 3.5." +msgstr "B() システムコールは Linux 3.5 で初めて登場した。" + +#. type: Plain text +#: build/C/man2/kcmp.2:205 +msgid "" +"B() is Linux-specific and should not be used in programs intended to " +"be portable." +msgstr "" +"B() は Linux 特有であり、 移植を考慮したプログラムでは使用すべきではな" +"い。" + +#. type: Plain text +#: build/C/man2/kcmp.2:208 +msgid "" +"Glibc does not provide a wrapper for this system call; call it using " +"B(2)." +msgstr "" +"glibc はこのシステムコールに対するラッパー関数を提供していない。 " +"B(2) を使って呼び出すこと。" + +#. type: Plain text +#: build/C/man2/kcmp.2:217 +msgid "" +"This system call is available only if the kernel was configured with " +"B. The main use of the system call is for the " +"checkpoint/restore in user space (CRIU) feature. The alternative to this " +"system call would have been to expose suitable process information via the " +"B(5) filesystem; this was deemed to be unsuitable for security " +"reasons." +msgstr "" +"このシステムコールが利用できるのは、 カーネルの B " +"オプションが有効になっている場合だけである。 このシステムコールの主な用途" +"は、 ユーザー空間でのチェックポイント/リストア (checkpoint/restore in user " +"space; CRIU) 機能である。 このシステムコールを使わないとすると、 B(5) " +"ファイルシステム経由で必要なプロセス情報を公開することになるが、 これはセキュ" +"リティ上の理由から不適切とみなされた。" + +#. type: Plain text +#: build/C/man2/kcmp.2:222 +msgid "" +"See B(2) for some background information on the shared resources " +"referred to on this page." +msgstr "" +"このページで参照されている共有リソースに関する背景についての情報は " +"B(2) を参照のこと。" + +#. type: Plain text +#: build/C/man2/kcmp.2:225 +msgid "B(2), B(2)" +msgstr "B(2), B(2)" + +#. type: TH +#: build/C/man2/sched_get_priority_max.2:29 +#, no-wrap +msgid "SCHED_GET_PRIORITY_MAX" +msgstr "SCHED_GET_PRIORITY_MAX" + +#. type: TH +#: build/C/man2/sched_get_priority_max.2:29 +#, no-wrap +msgid "2014-05-12" +msgstr "2014-05-12" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:32 +msgid "" +"sched_get_priority_max, sched_get_priority_min - get static priority range" +msgstr "" +"sched_get_priority_max, sched_get_priority_min - 静的プライオリティの範囲を取" +"得する" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:34 +#: build/C/man2/sched_rr_get_interval.2:34 build/C/man2/sched_yield.2:34 +msgid "B<#include Esched.hE>" +msgstr "B<#include Esched.hE>" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:36 +msgid "BIB<);>" +msgstr "BIB<);>" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:38 +msgid "BIB<);>" +msgstr "BIB<);>" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:59 +msgid "" +"B() returns the maximum priority value that can be " +"used with the scheduling algorithm identified by I. " +"B() returns the minimum priority value that can be " +"used with the scheduling algorithm identified by I. Supported " +"I values are B, B, B, " +"B, B, and B. Further details about " +"these policies can be found in B(7)." +msgstr "" +"B() はI によって指定されたスケジューリングの" +"アルゴリズムで 使用されるプライオリティの最大値を返す。 " +"B() はI によって指定されたスケジューリングの" +"アルゴリズムで 使用されるプライオリティの最小値を返す。 サポートされる " +"I の値は B、 B、 B、 " +"B, B, B である。これらのスケジューリ" +"ング方針に関する詳細は B(7) に書かれている。" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:68 +msgid "" +"Processes with numerically higher priority values are scheduled before " +"processes with numerically lower priority values. Thus, the value returned " +"by B() will be greater than the value returned by " +"B()." +msgstr "" +"数値的に大きなプライオリティ値を持つプロセスは小さな プライオリティ値を持つプ" +"ロセスより前にスケジュールされる。 このため B() が返" +"す値は B() が返す値よりも大きい。" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:76 +msgid "" +"Linux allows the static priority range 1 to 99 for the B and " +"B policies, and the priority 0 for the remaining policies. " +"Scheduling priority ranges for the various policies are not alterable." +msgstr "" +"Linux では、 ポリシー B と B では 1 から 99 の範囲の静" +"的プライオリティーを持ち、それ以外のポリシーでは プライオリティとして 0 を持" +"つ。 それぞれの方針のスケジューリングプライオリティの範囲は 変更することがで" +"きない。" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:88 +msgid "" +"The range of scheduling priorities may vary on other POSIX systems, thus it " +"is a good idea for portable applications to use a virtual priority range and " +"map it to the interval given by B() and " +"B(). POSIX.1-2001 requires a spread of at least 32 " +"between the maximum and the minimum values for B and B." +msgstr "" +"スケジューリングプライオリティの範囲は他の POSIX システムと 異なっているかも" +"しれない。それで、移植性(portable)のある アプリケーションでは仮想的な範囲を用" +"い B() と B() で与えられた" +"間隔にマップして使用することはいい考えである。 POSIX.1-2001 では " +"B と B における 最大値と最小値の間隔を少なくとも 32 に" +"することを要求している。" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:97 +msgid "" +"POSIX systems on which B() and " +"B() are available define " +"B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." +msgstr "" +"POSIX システムでは B() と " +"B() は Iunistd.hE> に " +"B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:107 +msgid "" +"On success, B() and B() " +"return the maximum/minimum priority value for the named scheduling policy. " +"On error, -1 is returned, and I is set appropriately." +msgstr "" +"成功した場合は B() と B() " +"は指定されたスケジューリング方針のプライオリティの最大値/最小値を返す。 エ" +"ラーの場合は -1 が返され、 I が適切に設定される。" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:113 +msgid "The argument I does not identify a defined scheduling policy." +msgstr "引き数 I が定義されているスケジューリング方針と一致しない。" + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:115 +#: build/C/man2/sched_rr_get_interval.2:96 build/C/man2/sched_setparam.2:121 +#: build/C/man2/sched_yield.2:54 +msgid "POSIX.1-2001." +msgstr "POSIX.1-2001." + +#. type: Plain text +#: build/C/man2/sched_get_priority_max.2:125 +msgid "" +"B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(7)" +msgstr "" +"B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(7)" + +#. type: TH +#: build/C/man3/sched_getcpu.3:26 +#, no-wrap +msgid "SCHED_GETCPU" +msgstr "SCHED_GETCPU" + +#. type: TH +#: build/C/man3/sched_getcpu.3:26 +#, no-wrap +msgid "2014-05-10" +msgstr "2014-05-10" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:29 +msgid "sched_getcpu - determine CPU on which the calling thread is running" +msgstr "sched_getcpu - 呼び出したスレッドが実行されている CPU を知る" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:34 +#, no-wrap +msgid "B\n" +msgstr "B\n" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:39 build/C/man2/unshare.2:33 +msgid "" +"Feature Test Macro Requirements for glibc (see B(7)):" +msgstr "glibc 向けの機能検査マクロの要件 (B(7) 参照):" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:42 +msgid "B():" +msgstr "B():" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:58 +msgid "" +"B() returns the number of the CPU on which the calling thread " +"is currently executing." +msgstr "" +"B() は、呼び出したスレッドが現在実行されている CPU の番号を返" +"す。" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:65 +msgid "" +"On success, B() returns a nonnegative CPU number. On error, " +"-1 is returned and I is set to indicate the error." +msgstr "" +"成功すると、 B() は非負の CPU 番号を返す。 エラーの場合、-1 を" +"返し、 I にエラーを示す値を設定する。" + +#. type: TP +#: build/C/man3/sched_getcpu.3:66 build/C/man2/sched_rr_get_interval.2:87 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:70 +msgid "This kernel does not implement B(2)." +msgstr "このカーネルでは B(2) が実装されていない。" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:72 +msgid "This function is available since glibc 2.6." +msgstr "この関数は glibc 2.6 以降で利用可能である。" + +#. type: SH +#: build/C/man3/sched_getcpu.3:72 +#, no-wrap +msgid "ATTRIBUTES" +msgstr "属性" + +#. type: SS +#: build/C/man3/sched_getcpu.3:73 +#, no-wrap +msgid "Multithreading (see pthreads(7))" +msgstr "マルチスレッディング (pthreads(7) 参照)" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:77 +msgid "The B() function is thread-safe." +msgstr "B() 関数はスレッドセーフである。" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:80 +msgid "B() is glibc-specific." +msgstr "B() は glibc 固有である。" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:82 +msgid "The call" +msgstr "呼び出し" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:86 +#, no-wrap +msgid "cpu = sched_getcpu();\n" +msgstr "cpu = sched_getcpu();\n" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:92 +msgid "is equivalent to the following B(2) call:" +msgstr "は、以下の B(2) 呼び出しと等価である。" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:98 +#, no-wrap +msgid "" +"int c, s;\n" +"s = getcpu(&c, NULL, NULL);\n" +"cpu = (s == -1) ? s : c;\n" +msgstr "" +"int c, s;\n" +"s = getcpu(&c, NULL, NULL);\n" +"cpu = (s == -1) ? s : c;\n" + +#. type: Plain text +#: build/C/man3/sched_getcpu.3:103 +msgid "B(2), B(7)" +msgstr "B(2), B(7)" + +#. type: TH +#: build/C/man2/sched_rr_get_interval.2:29 +#, no-wrap +msgid "SCHED_RR_GET_INTERVAL" +msgstr "SCHED_RR_GET_INTERVAL" + +#. type: TH +#: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_yield.2:29 +#, no-wrap +msgid "2014-04-28" +msgstr "2014-04-28" + +#. type: Plain text +#: build/C/man2/sched_rr_get_interval.2:32 +msgid "sched_rr_get_interval - get the SCHED_RR interval for the named process" +msgstr "sched_rr_get_interval - 指定されたプロセスの SCHED_RR 間隔を取得する" + +#. type: Plain text +#: build/C/man2/sched_rr_get_interval.2:36 +msgid "" +"BIB<, struct timespec * >IB<);>" +msgstr "" +"BIB<, struct timespec *>IB<);>" + +#. type: Plain text +#: build/C/man2/sched_rr_get_interval.2:47 +msgid "" +"B() writes into the I structure pointed to " +"by I the round-robin time quantum for the process identified by I. " +"The specified process should be running under the B scheduling " +"policy." +msgstr "" +"B() は I で指定された I 構造体に\n" +"I で指定されたプロセスのラウンドロビン時間量 (round robin time\n" +"quantum) を書き込む。指定されたプロセスは B スケジューリング\n" +"ポリシーで動作しているはずである。" + +#. type: Plain text +#: build/C/man2/sched_rr_get_interval.2:51 +msgid "The I structure has the following form:" +msgstr "I 構造体は以下の通りである:" + +#. type: Plain text +#: build/C/man2/sched_rr_get_interval.2:58 +#, no-wrap +msgid "" +"struct timespec {\n" +" time_t tv_sec; /* seconds */\n" +" long tv_nsec; /* nanoseconds */\n" +"};\n" +msgstr "" +"struct timespec {\n" +" time_t tv_sec; /* seconds */\n" +" long tv_nsec; /* nanoseconds */\n" +"};\n" + +# +#. FIXME . On Linux, sched_rr_get_interval() +#. returns the timeslice for SCHED_OTHER processes -- this timeslice #. is influenced by the nice value. #. For SCHED_FIFO processes, this always returns 0. #. The round-robin time quantum value is not alterable under Linux #. 1.3.81. #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:74 +#: build/C/man2/sched_rr_get_interval.2:73 msgid "" "If I is zero, the time quantum for the calling process is written into " "I<*tp>." msgstr "" +"I が 0 の場合、呼び出したプロセスの時間量 (time quantum) が\n" +"I<*tp> に書き込まれる。" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:81 +#: build/C/man2/sched_rr_get_interval.2:80 msgid "" "On success, B() returns 0. On error, -1 is " "returned, and I is set appropriately." @@ -2582,79 +3483,51 @@ msgstr "" "返され、 I が適切に設定される。" #. type: TP -#: build/C/man2/sched_rr_get_interval.2:82 -#: build/C/man2/sched_setaffinity.2:118 +#: build/C/man2/sched_rr_get_interval.2:81 +#: build/C/man2/sched_setaffinity.2:117 #, no-wrap msgid "B" msgstr "B" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:85 -msgid "Problem with copying information to userspace." -msgstr "情報をユーザ空間にコピーする時に問題が起きた。" +#: build/C/man2/sched_rr_get_interval.2:84 +msgid "Problem with copying information to user space." +msgstr "情報をユーザー空間にコピーする時に問題が起きた。" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:88 +#: build/C/man2/sched_rr_get_interval.2:87 msgid "Invalid pid." msgstr "PID が不正である。" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:91 +#: build/C/man2/sched_rr_get_interval.2:90 msgid "The system call is not yet implemented (only on rather old kernels)." msgstr "" -"システム・コールがまだ実装されていない (かなり古いカーネルにおいてのみ)。" - -#. type: TP -#: build/C/man2/sched_rr_get_interval.2:91 -#: build/C/man2/sched_setaffinity.2:146 build/C/man2/sched_setparam.2:108 -#: build/C/man2/sched_setscheduler.2:442 -#, no-wrap -msgid "B" -msgstr "B" +"システムコールがまだ実装されていない (かなり古いカーネルにおいてのみ)。" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:95 +#: build/C/man2/sched_rr_get_interval.2:94 msgid "Could not find a process with the ID I." -msgstr "" +msgstr "プロセス ID が I のプロセスが見つからなかった。" #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:104 -#, fuzzy -#| msgid "" -#| "POSIX systems on which B() is available define " -#| "B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." +#: build/C/man2/sched_rr_get_interval.2:103 msgid "" "POSIX systems on which B() is available define " "B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." msgstr "" -"POSIX システムで B() は Iunistd.hE> に " +"POSIX システムで B() は Iunistd.hE> に\n" "B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。" #. type: SS -#: build/C/man2/sched_rr_get_interval.2:104 +#: build/C/man2/sched_rr_get_interval.2:103 #, no-wrap -msgid "Linux Notes" +msgid "Linux notes" msgstr "Linux での注意" #. commit a4ec24b48ddef1e93f7578be53270f0b95ad666c -#. .SH BUGS -#. As of Linux 1.3.81 -#. .BR sched_rr_get_interval () -#. returns with error -#. ENOSYS, because SCHED_RR has not yet been fully implemented and tested -#. properly. #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:126 -#, fuzzy -#| msgid "" -#| "POSIX does not specify any mechanism for controlling the size of the " -#| "round-robin time quantum. However, Linux provides a (nonportable) method " -#| "of doing this. The quantum can be controlled by adjusting the process's " -#| "nice value (see B(2)). Assigning a negative (i.e., high) " -#| "nice value results in a longer quantum; assigning a positive (i.e., low) " -#| "nice value results in a shorter quantum. The default quantum is 0.1 " -#| "seconds; the degree to which changing the nice value affects the quantum " -#| "has varied somewhat across kernel versions." +#: build/C/man2/sched_rr_get_interval.2:117 msgid "" "POSIX does not specify any mechanism for controlling the size of the round-" "robin time quantum. Older Linux kernels provide a (nonportable) method of " @@ -2663,59 +3536,76 @@ msgid "" "results in a longer quantum; assigning a positive (i.e., low) nice value " "results in a shorter quantum. The default quantum is 0.1 seconds; the " "degree to which changing the nice value affects the quantum has varied " -"somewhat across kernel versions. Since Linux 2.6.24, the B " -"quantum cannot be modified." -msgstr "" -"POSIX ではラウンド・ロビン時間量の大きさを制御する仕組みが規定されていない。 " -"しかし、Linux ではこれを変更する方法が提供されており (この方法に移植性はな" -"い)、 プロセスの nice 値を調整することで時間量を制御できる (B" -"(2) 参照)。 負の nice 値 (すなわち、高い nice 値) を割り当てると時間量は長く" -"なり、 正の nice 値 (すなわち、低い nice 値) を割り当てると時間量は短くな" -"る。 デフォルトの時間量は 0.1 秒である。 nice 値の変更が時間量にどの程度影響" -"を与えるかは カーネルのバージョンにより多少異なる。" - +"somewhat across kernel versions. This method of adjusting the quantum was " +"removed starting with Linux 2.6.24." +msgstr "" +"POSIX ではラウンドロビン時間量の大きさを制御する仕組みが規定されていない。 古" +"い Linux カーネルではこれを変更する方法が提供されている (この方法に移植性はな" +"い)。 プロセスの nice 値を調整することで時間量を制御できる " +"(B(2) 参照)。 負の nice 値 (すなわち、高い nice 値) を割り当てる" +"と時間量は長くなり、 正の nice 値 (すなわち、低い nice 値) を割り当てると時間" +"量は短くなる。 デフォルトの時間量は 0.1 秒である。 nice 値の変更が時間量にど" +"の程度影響を与えるかは カーネルのバージョンにより多少異なる。時間量を調整する" +"このメソッドは Linux 2.6.24 以降で削除された。" + +#. commit ce0dbbbb30aee6a835511d5be446462388ba9eee +#. .SH BUGS +#. As of Linux 1.3.81 +#. .BR sched_rr_get_interval () +#. returns with error +#. ENOSYS, because SCHED_RR has not yet been fully implemented and tested +#. properly. #. type: Plain text -#: build/C/man2/sched_rr_get_interval.2:129 -#: build/C/man2/sched_setaffinity.2:178 +#: build/C/man2/sched_rr_get_interval.2:132 msgid "" -"B(2) has a description of the Linux scheduling scheme." +"Linux 3.9 added a new mechanism for adjusting (and viewing) the B " +"quantum: the I file exposes the " +"quantum as a millisecond value, whose default is 100. Writing 0 to this " +"file resets the quantum to the default value." msgstr "" -"B(2) に Linux のスケジューリング方式についての説明があ" -"る。" +"Linux 3.9 で、 B の時間量の調整 (と参照) を行う新しい機構が追加され" +"た。 I ファイルでミリ秒単位の時間量の" +"値が参照でき、 デフォルト値は 100 である。 このファイルに 0 を書き込むと、 時" +"間量をデフォルト値に戻すことができる。" + +#. type: Plain text +#: build/C/man2/sched_rr_get_interval.2:134 build/C/man2/sched_yield.2:81 +msgid "B(7)" +msgstr "B(7)" #. type: TH -#: build/C/man2/sched_setaffinity.2:35 +#: build/C/man2/sched_setaffinity.2:34 #, no-wrap msgid "SCHED_SETAFFINITY" msgstr "SCHED_SETAFFINITY" #. type: TH -#: build/C/man2/sched_setaffinity.2:35 +#: build/C/man2/sched_setaffinity.2:34 #, no-wrap -msgid "2010-11-06" -msgstr "2010-11-06" +msgid "2014-12-31" +msgstr "2014-12-31" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:39 +#: build/C/man2/sched_setaffinity.2:38 msgid "" -"sched_setaffinity, sched_getaffinity - set and get a process's CPU affinity " +"sched_setaffinity, sched_getaffinity - set and get a thread's CPU affinity " "mask" msgstr "" -"sched_setaffinity, sched_getaffinity - プロセスの CPU affinity マスクを設定・" +"sched_setaffinity, sched_getaffinity - スレッドの CPU affinity マスクを設定・" "取得する" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:46 +#: build/C/man2/sched_setaffinity.2:45 #, no-wrap msgid "" "BIB<, size_t >IB<,>\n" -"B< cpu_set_t *>IB<);>\n" +"B< const cpu_set_t *>IB<);>\n" msgstr "" "BIB<, size_t >IB<,>\n" -"B< cpu_set_t *>IB<);>\n" +"B< const cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:49 +#: build/C/man2/sched_setaffinity.2:48 #, no-wrap msgid "" "BIB<, size_t >IB<,>\n" @@ -2725,79 +3615,80 @@ msgstr "" "B< cpu_set_t *>IB<);>\n" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:64 +#: build/C/man2/sched_setaffinity.2:63 msgid "" -"A process's CPU affinity mask determines the set of CPUs on which it is " +"A thread's CPU affinity mask determines the set of CPUs on which it is " "eligible to run. On a multiprocessor system, setting the CPU affinity mask " "can be used to obtain performance benefits. For example, by dedicating one " -"CPU to a particular process (i.e., setting the affinity mask of that process " -"to specify a single CPU, and setting the affinity mask of all other " -"processes to exclude that CPU), it is possible to ensure maximum execution " -"speed for that process. Restricting a process to run on a single CPU also " -"avoids the performance cost caused by the cache invalidation that occurs " -"when a process ceases to execute on one CPU and then recommences execution " -"on a different CPU." -msgstr "" -"プロセスの CPU affinity (親和度) マスクは、そのプロセスが 実行を許可されてい" -"る CPU の集合を決定する。 マルチプロセッサ・システムでは、CPU affinity マスク" -"を設定することで 性能上のメリットを得られる可能性がある。 例えば、特定のプロ" -"セスを一つの CPU に括り付け (すなわち、そのプロセスの affinity マスクを一つ" -"の CPU に設定し)、 他の全てのプロセスの affinity マスクからその CPU を除外す" -"ることで、 確実にそのプロセスの実行速度を最大にすることができる。 また、ある" -"プロセスの実行を一つの CPU に限定することで、 一つの CPU での実行を停止してか" -"ら別の CPU で実行を再開するときに発生する キャッシュ無効化 (cache " +"CPU to a particular thread (i.e., setting the affinity mask of that thread " +"to specify a single CPU, and setting the affinity mask of all other threads " +"to exclude that CPU), it is possible to ensure maximum execution speed for " +"that thread. Restricting a thread to run on a single CPU also avoids the " +"performance cost caused by the cache invalidation that occurs when a thread " +"ceases to execute on one CPU and then recommences execution on a different " +"CPU." +msgstr "" +"スレッドの CPU affinity (親和度) マスクは、そのスレッドが 実行を許可されてい" +"る CPU の集合を決定する。 マルチプロセッサシステムでは、CPU affinity マスクを" +"設定することで 性能上のメリットを得られる可能性がある。 例えば、特定のスレッ" +"ドを一つの CPU に括り付け (すなわち、そのスレッドの affinity マスクを一つの " +"CPU に設定し)、 他の全てのスレッドの affinity マスクからその CPU を除外するこ" +"とで、 確実にそのスレッドの実行速度を最大にすることができる。 また、あるス" +"レッドの実行を一つの CPU に限定することで、 一つの CPU での実行を停止してから" +"別の CPU で実行を再開するときに発生する キャッシュ無効化 (cache " "invalidation) による性能面の劣化を避けることもできる。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:71 +#: build/C/man2/sched_setaffinity.2:70 msgid "" "A CPU affinity mask is represented by the I structure, a \"CPU set" "\", pointed to by I. A set of macros for manipulating CPU sets is " "described in B(3)." msgstr "" "CPU affinity マスクは「CPU の集合」を表す I 構造体で表現され、 " -"I へのポインタ I で指定される。 CPU 集合を操作するためのマク" -"ロ群については B(3) で記載されている。" +"I へのポインター I で指定される。 CPU 集合を操作するためのマ" +"クロ群については B(3) で記載されている。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:86 +#: build/C/man2/sched_setaffinity.2:85 msgid "" -"B() sets the CPU affinity mask of the process whose ID " -"is I to the value specified by I. If I is zero, then the " -"calling process is used. The argument I is the length (in " -"bytes) of the data pointed to by I. Normally this argument would be " +"B() sets the CPU affinity mask of the thread whose ID is " +"I to the value specified by I. If I is zero, then the " +"calling thread is used. The argument I is the length (in bytes) " +"of the data pointed to by I. Normally this argument would be " "specified as I." msgstr "" -"B() は、プロセスID が I のプロセスの CPU affinity マ" -"スクを I で指定された値に設定する。 I が 0 の場合、呼び出し元プロ" -"セスが使われる。 I 引き数には I が指すデータの長さ (バイト" -"単位) である。 通常は、この引き数には I を指定すればよい。" +"B() は、スレッド ID が I のスレッドの CPU affinity " +"マスクを I で指定された値に設定する。 I が 0 の場合、呼び出し元ス" +"レッドが使われる。 I 引き数には I が指すデータの長さ (バイ" +"ト単位) である。 通常は、この引き数には I を指定すればよ" +"い。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:93 +#: build/C/man2/sched_setaffinity.2:92 msgid "" -"If the process specified by I is not currently running on one of the " -"CPUs specified in I, then that process is migrated to one of the CPUs " +"If the thread specified by I is not currently running on one of the " +"CPUs specified in I, then that thread is migrated to one of the CPUs " "specified in I." msgstr "" -"I で指定されたプロセスが I で指定された CPU のいずれかで現在実行さ" -"れていない場合、 そのプロセスは I で指定された CPU のいずれかに移動され" +"I で指定されたスレッドが I で指定された CPU のいずれかで現在実行さ" +"れていない場合、 そのスレッドは I で指定された CPU のいずれかに移動され" "る。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:108 +#: build/C/man2/sched_setaffinity.2:107 msgid "" -"B() writes the affinity mask of the process whose ID is " +"B() writes the affinity mask of the thread whose ID is " "I into the I structure pointed to by I. The " "I argument specifies the size (in bytes) of I. If I " -"is zero, then the mask of the calling process is returned." +"is zero, then the mask of the calling thread is returned." msgstr "" -"B() は、 プロセスID が I のプロセスの affinity マス" +"B() は、 スレッド ID が I のスレッドの affinity マス" "クを I が指す I 構造体に書き込む。 I 引き数には " "I の (バイト単位の) 大きさを指定する。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:117 +#: build/C/man2/sched_setaffinity.2:116 msgid "" "On success, B() and B() return 0. " "On error, -1 is returned, and I is set appropriately." @@ -2806,53 +3697,53 @@ msgstr "" "す。 エラーの場合は -1 を返し、 I を適切に設定する。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:121 +#: build/C/man2/sched_setaffinity.2:120 msgid "A supplied memory address was invalid." -msgstr "指定されたメモリ番地が不正である。" +msgstr "指定されたメモリー番地が不正である。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:129 +#: build/C/man2/sched_setaffinity.2:128 msgid "" "The affinity bit mask I contains no processors that are currently " -"physically on the system and permitted to the process according to any " +"physically on the system and permitted to the thread according to any " "restrictions that may be imposed by the \"cpuset\" mechanism described in " "B(7)." msgstr "" -"システム上に現在実際に存在し、かつ \"cpuset\" 機構が課す制限においてそのプロ" -"セスに対して許可されている プロセッサが、 affinity ビットマスク I に含" -"まれていない。 \"cpuset\" 機構については B(7) を参照。" +"システム上に現在実際に存在し、かつ \"cpuset\" 機構が課す制限においてそのス" +"レッドに対して許可されている プロセッサが、 affinity ビットマスク I に" +"含まれていない。 \"cpuset\" 機構については B(7) を参照。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:136 +#: build/C/man2/sched_setaffinity.2:135 msgid "" -"(B() and, in kernels before 2.6.9, B" -"()) I is smaller than the size of the affinity mask used by the " -"kernel." +"(B() and, in kernels before 2.6.9, " +"B()) I is smaller than the size of the " +"affinity mask used by the kernel." msgstr "" "(B() と、カーネル 2.6.9 以前の B()) " "I がカーネルで使われている affinity マスクのサイズより小さい。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:146 +#: build/C/man2/sched_setaffinity.2:145 msgid "" -"(B()) The calling process does not have appropriate " +"(B()) The calling thread does not have appropriate " "privileges. The caller needs an effective user ID equal to the real user ID " -"or effective user ID of the process identified by I, or it must possess " +"or effective user ID of the thread identified by I, or it must possess " "the B capability." msgstr "" -"(B()) 呼び出し元のプロセスに適切な特権がなかった。 呼び出" -"し元は、実効ユーザ ID が I で識別されるプロセスの実ユーザ ID または実効" -"ユーザ ID と同じであるか、 B ケーパビリティ (capability) を持た" -"なければならない。" +"(B()) 呼び出し元のスレッドに適切な特権がなかった。 呼び出" +"し元は、実効ユーザー ID が I で識別されるスレッドの実ユーザー ID または" +"実効ユーザー ID と同じであるか、 B ケーパビリティ (capability) " +"を持たなければならない。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:149 build/C/man2/sched_setparam.2:111 -#: build/C/man2/sched_setscheduler.2:445 -msgid "The process whose ID is I could not be found." -msgstr "プロセス ID I のプロセスが見つからなかった。" +#: build/C/man2/sched_setaffinity.2:148 build/C/man2/sched_setattr.2:289 +#: build/C/man2/sched_setscheduler.2:170 +msgid "The thread whose ID is I could not be found." +msgstr "ID が I のスレッドが見つからなかった。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:160 +#: build/C/man2/sched_setaffinity.2:159 msgid "" "The CPU affinity system calls were introduced in Linux kernel 2.5.8. The " "system call wrappers were introduced in glibc 2.3. Initially, the glibc " @@ -2861,38 +3752,57 @@ msgid "" "in glibc 2.3.4, with type I." msgstr "" "CPU affinity システムコールは Linux kernel 2.5.8 で導入された。 これらのシス" -"テムコールのラッパー関数は glibc 2.3 で導入された。 最初は、glibc のインタ" +"テムコールのラッパー関数は glibc 2.3 で導入された。 最初は、glibc のインター" "フェースには I 型の I 引き数が入っていた。 glibc " "2.3.3 では I 引き数が削除されたが、glibc 2.3.4 で I 型で" "復活した。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:162 +#: build/C/man2/sched_setaffinity.2:161 msgid "These system calls are Linux-specific." msgstr "これらのシステムコールは Linux 固有である。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:175 +#: build/C/man2/sched_setaffinity.2:174 msgid "" -"After a call to B(), the set of CPUs on which the process " +"After a call to B(), the set of CPUs on which the thread " "will actually run is the intersection of the set specified in the I " "argument and the set of CPUs actually present on the system. The system may " -"further restrict the set of CPUs on which the process runs if the \"cpuset\" " +"further restrict the set of CPUs on which the thread runs if the \"cpuset\" " "mechanism described in B(7) is being used. These restrictions on " -"the actual set of CPUs on which the process will run are silently imposed by " +"the actual set of CPUs on which the thread will run are silently imposed by " "the kernel." msgstr "" -"B() を呼び出した後は、プロセスが実際に実行される CPU の集" +"B() を呼び出した後は、スレッドが実際に実行される CPU の集" "合は、 I 引き数で指定された集合と、システム上に実際に存在する CPU の集" -"合の 共通集合 (AND) となる。 \"cpuset\" 機構が使用されている場合には、プロセ" -"スが動作する CPU 集合 に対してシステムはさらに制限を加えるかもしれない " -"(\"cpuset\" 機構については B(7) を参照)。 プロセスが動作する実際の " +"合の 共通集合 (AND) となる。 \"cpuset\" 機構が使用されている場合には、スレッ" +"ドが動作する CPU 集合 に対してシステムはさらに制限を加えるかもしれない " +"(\"cpuset\" 機構については B(7) を参照)。 スレッドが動作する実際の " "CPU 集合に対する制限はカーネルにより 暗黙のうちに適用される。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:195 +#: build/C/man2/sched_setaffinity.2:186 +msgid "" +"There are various ways of determining the number of CPUs available on the " +"system, including: inspecting the contents of I; using " +"B(3) to obtain the values of the B<_SC_NPROCESSORS_CONF> and " +"B<_SC_NPROCESSORS_ONLN> parameters; and inspecting the list CPU directories " +"under I." +msgstr "" +"システムで利用可能な CPU 数を判定する方法はいくつかある。 I の" +"内容を調べる、 B(3) を使って B<_SC_NPROCESSORS_CONF> と " +"B<_SC_NPROCESSORS_ONLN> の値を取得する、 I の CPU " +"ディレクトリの一覧を調べる、などがある。" + +#. type: Plain text +#: build/C/man2/sched_setaffinity.2:189 +msgid "B(7) has a description of the Linux scheduling scheme." +msgstr "B(7) に Linux のスケジューリング方式についての説明がある。" + +#. type: Plain text +#: build/C/man2/sched_setaffinity.2:206 msgid "" -"The affinity mask is actually a per-thread attribute that can be adjusted " +"The affinity mask is a per-thread attribute that can be adjusted " "independently for each of the threads in a thread group. The value returned " "from a call to B(2) can be passed in the argument I. " "Specifying I as 0 will set the attribute for the calling thread, and " @@ -2901,16 +3811,16 @@ msgid "" "POSIX threads API, then use B(3) instead of " "B().)" msgstr "" -"実際には affinity マスクはスレッド単位の属性で、スレッドグループの 各スレッド" -"単位に独立して調整することができる。 B(2) コールからの返り値をこの" -"コールの I 引き数として渡すことができる。 I に 0 を指定すると呼び出" -"し元のスレッドの属性が設定され、 B(2) コールからの返り値を I に" -"指定するとスレッドグループのメインスレッドの属性が設定される (POSIX スレッド " -"API を使用している場合、 B() の代わりに " +"affinity マスクはスレッド単位の属性で、スレッドグループの 各スレッド単位に独" +"立して調整することができる。 B(2) コールからの返り値をこのコールの " +"I 引き数として渡すことができる。 I に 0 を指定すると呼び出し元のス" +"レッドの属性が設定され、 B(2) コールからの返り値を I に指定する" +"とスレッドグループのメインスレッドの属性が設定される (POSIX スレッド API を使" +"用している場合、 B() の代わりに " "B(3) を使用すること)。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:201 +#: build/C/man2/sched_setaffinity.2:212 msgid "" "A child created via B(2) inherits its parent's CPU affinity mask. " "The affinity mask is preserved across an B(2)." @@ -2919,72 +3829,680 @@ msgstr "" "承する。 affinity マスクは B(2) の前後で保存される。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:215 +#: build/C/man2/sched_setaffinity.2:226 msgid "" "This manual page describes the glibc interface for the CPU affinity calls. " "The actual system call interface is slightly different, with the I " -"being typed as I, reflecting the fact that the underlying " +"being typed as I, reflecting the fact that the underlying " "implementation of CPU sets is a simple bit mask. On success, the raw " "B() system call returns the size (in bytes) of the " "I data type that is used internally by the kernel to represent " "the CPU set bit mask." msgstr "" -"このマニュアルページでは CPU affinity コールの glibc インタフェースを 説明し" -"ている。実際のシステムコール・インタフェースは少し違っており、 実際の実装で" -"は CPU 集合は簡単なビットマスクであるという実状を反映し、 I の型が " -"I となっている。 成功時には、生の B() シ" -"ステムコール自身は I データ型の (バイト単位の) 大きさを返す。 " -"I はカーネル内部で CPU 集合のビットマスクを表現するのに 使われてい" -"るデータ型である。" +"このマニュアルページでは CPU affinity コールの glibc インターフェースを 説明" +"している。実際のシステムコールインターフェースは少し違っており、 実際の実装で" +"は CPU 集合は簡単なビットマスクであるという実状を反映し、 I の型が " +"I となっている。 成功時には、生の B() " +"システムコール自身は I データ型の (バイト単位の) 大きさを返す。 " +"I はカーネル内部で CPU 集合のビットマスクを表現するのに 使われてい" +"るデータ型である。" + +#. type: Plain text +#: build/C/man2/sched_setaffinity.2:248 +msgid "" +"B(1), B(1), B(1), B(2), B(2), " +"B(2), B(2), B(2), B(2), " +"B(2), B(2), " +"B(2), B(2), B(3), " +"B(3), B(3), B(7), " +"B(7), B(7)" +msgstr "" +"B(1), B(1), B(1), B(2), B(2), " +"B(2), B(2), B(2), B(2), " +"B(2), B(2), " +"B(2), B(2), B(3), " +"B(3), B(3), B(7), " +"B(7), B(7)" + +#. type: TH +#: build/C/man2/sched_setattr.2:26 +#, no-wrap +msgid "SCHED_SETATTR" +msgstr "SCHED_SETATTR" + +#. type: TH +#: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setscheduler.2:26 +#: build/C/man7/sched.7:32 +#, no-wrap +msgid "2014-10-02" +msgstr "2014-10-02" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:30 +msgid "" +"sched_setattr, sched_getattr - set and get scheduling policy and attributes" +msgstr "" +"sched_setattr, sched_getattr - スケジューリングポリシーと属性の設定と取得を行" +"なう" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:36 +#, no-wrap +msgid "" +"BIB<, const struct sched_attr *>IB<,>\n" +"B< unsigned int >IB<);>\n" +msgstr "" +"BIB<, const struct sched_attr *>IB<,>\n" +"B< unsigned int >IB<);>\n" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:39 +#, no-wrap +msgid "" +"BIB<, const struct sched_attr *>IB<,>\n" +"B< unsigned int >IB<, unsigned int >IB<);>\n" +msgstr "" +"BIB<, const struct sched_attr *>IB<,>\n" +"B< unsigned int >IB<, unsigned int >IB<);>\n" + +#. type: SS +#: build/C/man2/sched_setattr.2:42 +#, no-wrap +msgid "sched_setattr()" +msgstr "sched_setattr()" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:52 +msgid "" +"The B() system call sets the scheduling policy and " +"associated attributes for the thread whose ID is specified in I. If " +"I equals zero, the scheduling policy and attributes of the calling " +"thread will be set." +msgstr "" +"B() システムコールは、 I で指定された ID を持つスレッドの" +"スケジューリングポリシーと関連する属性を設定する。 I が 0 の場合、呼び出" +"したスレッド自身のスケジューリングポリシーと属性が設定される。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:73 +msgid "" +"Currently, Linux supports the following \"normal\" (i.e., non-real-time) " +"scheduling policies as values that may be specified in I:" +msgstr "" +"現在のところ、 Linux では、 以下の「通常」の (つまり、リアルタイムではない) " +"スケジューリングポリシーが、 I に指定できる値としてサポートされてい" +"る。" + +#. type: TP +#: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:73 +#, no-wrap +msgid "B" +msgstr "B" + +#. In the 2.6 kernel sources, SCHED_OTHER is actually called +#. SCHED_NORMAL. +#. type: Plain text +#: build/C/man2/sched_setattr.2:61 build/C/man2/sched_setscheduler.2:78 +msgid "the standard round-robin time-sharing policy;" +msgstr "標準の、ラウンドロビンによる時分割型のスケジューリングポリシー。" + +#. type: TP +#: build/C/man2/sched_setattr.2:61 build/C/man2/sched_setscheduler.2:78 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:64 build/C/man2/sched_setscheduler.2:81 +msgid "for \"batch\" style execution of processes; and" +msgstr "「バッチ」形式でのプロセスの実行用。" + +#. type: TP +#: build/C/man2/sched_setattr.2:64 build/C/man2/sched_setscheduler.2:81 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:69 build/C/man2/sched_setscheduler.2:86 +msgid "for running I low priority background jobs." +msgstr "「非常に」低い優先度で動作するバックグラウンドジョブ用。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:99 +msgid "" +"Various \"real-time\" policies are also supported, for special time-critical " +"applications that need precise control over the way in which runnable " +"threads are selected for execution. For the rules governing when a process " +"may use these policies, see B(7). The real-time policies that may be " +"specified in I are:" +msgstr "" +"どの実行可能スレッドを選択するかについて、より正確な制御を必要とする 時間の制" +"約が厳しい特別なアプリケーション用として、 いろいろな「リアルタイム」ポリシー" +"もサポートされている。 プロセスがこれらのポリシーをいつ使用できるかを決める" +"ルールについては、B(7) を参照。 I には以下のリアルタイムポリ" +"シーを指定できる。" + +#. type: TP +#: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:99 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:81 build/C/man2/sched_setscheduler.2:102 +msgid "a first-in, first-out policy; and" +msgstr "ファーストイン、ファーストアウト型のポリシー。" + +#. type: TP +#: build/C/man2/sched_setattr.2:81 build/C/man2/sched_setscheduler.2:102 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:84 build/C/man2/sched_setscheduler.2:105 +msgid "a round-robin policy." +msgstr "ラウンドロビン型のポリシー。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:86 +msgid "Linux also provides the following policy:" +msgstr "Linux では以下のポリシーも提供されている。" + +#. type: TP +#: build/C/man2/sched_setattr.2:86 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:91 +msgid "a deadline scheduling policy; see B(7) for details." +msgstr "" +"デッドライン (応答期限) ベースのスケジューリングポリシー。詳細は B(7) " +"を参照。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:97 +msgid "" +"The I argument is a pointer to a structure that defines the new " +"scheduling policy and attributes for the specified thread. This structure " +"has the following form:" +msgstr "" +"I 引き数は、 指定したスレッドの新しいスケジューリングポリシーと属性を定" +"義した構造体へのポインターである。 この構造体は以下の形式である。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:113 +#, no-wrap +msgid "" +"struct sched_attr {\n" +" u32 size; /* Size of this structure */\n" +" u32 sched_policy; /* Policy (SCHED_*) */\n" +" u64 sched_flags; /* Flags */\n" +" s32 sched_nice; /* Nice value (SCHED_OTHER,\n" +" SCHED_BATCH) */\n" +" u32 sched_priority; /* Static priority (SCHED_FIFO,\n" +" SCHED_RR) */\n" +" /* Remaining fields are for SCHED_DEADLINE */\n" +" u64 sched_runtime;\n" +" u64 sched_deadline;\n" +" u64 sched_period;\n" +"};\n" +msgstr "" +"struct sched_attr {\n" +" u32 size; /* この構造体のサイズ */\n" +" u32 sched_policy; /* ポリシー (SCHED_*) */\n" +" u64 sched_flags; /* フラグ */\n" +" s32 sched_nice; /* nice 値 (SCHED_OTHER,\n" +" SCHED_BATCH) */\n" +" u32 sched_priority; /* 静的優先度 (SCHED_FIFO,\n" +" SCHED_RR) */\n" +" /* 残りのフィールドは SCHED_DEADLINE 用である */\n" +" u64 sched_runtime;\n" +" u64 sched_deadline;\n" +" u64 sched_period;\n" +"};\n" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:117 +msgid "The fields of this structure are as follows:" +msgstr "この構造体のフィールドは以下の通りである。" + +#. type: TP +#: build/C/man2/sched_setattr.2:117 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:132 +msgid "" +"This field should be set to the size of the structure in bytes, as in " +"I. If the provided structure is smaller than the " +"kernel structure, any additional fields are assumed to be '0'. If the " +"provided structure is larger than the kernel structure, the kernel verifies " +"that all additional fields are 0; if they are not, B() fails " +"with the error B and updates I to contain the size of the " +"kernel structure." +msgstr "" +"このフィールドには、 構造体のバイト単位のサイズを設定する。 I を指定すればよい。 指定された構造体がカーネル構造体よりも小さい" +"場合、 追加となるフィールドは 0 とみなされる。 指定された構造体がカーネル構造" +"体よりも大きい場合、 カーネルは追加のフィールドが 0 であるかを検査する。 0 で" +"ない場合は B() はエラー B で失敗するので、 I を" +"カーネル構造体のサイズに更新する必要がある。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:146 +msgid "" +"The above behavior when the size of the user-space I structure " +"does not match the size of the kernel structure allows for future " +"extensibility of the interface. Malformed applications that pass oversize " +"structures won't break in the future if the size of the kernel I " +"structure is increased. In the future, it could also allow applications " +"that know about a larger user-space I structure to determine " +"whether they are running on an older kernel that does not support the larger " +"structure." +msgstr "" +"ユーザー空間の I 構造体のサイズがカーネル構造体のサイズと一致しな" +"かった場合の上記の動作は、 このインターフェースを将来拡張できるようにするため" +"である。 サイズが大きい構造体を渡す行儀の良くないアプリケーションも、 将来" +"カーネルの I 構造体のサイズが大きくなったとしてもおかしくならな" +"い。 この仕組みにより、 将来的には、 大きなユーザー空間 I 構造体" +"があることを知っているアプリケーションで、 大きいサイズの構造体に対応していな" +"い古いカーネル上で動作しているかを判定することができる。" + +#. type: TP +#: build/C/man2/sched_setattr.2:146 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:151 +msgid "" +"This field specifies the scheduling policy, as one of the B values " +"listed above." +msgstr "" +"このフィールドはスケジューリングポリシーを指定する。 上記のリストにある " +"B 値のいずれかを指定する。" + +#. type: TP +#: build/C/man2/sched_setattr.2:151 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:162 +msgid "" +"This field contains flags controlling scheduling behavior. Only one such " +"flag is currently defined: B. As a result of " +"including this flag, children created by B(2) do not inherit " +"privileged scheduling policies. See B(7) for details." +msgstr "" +"このフィールドはスケジューリング動作の制御を行う。 現在のところ、サポートされ" +"ているフラグは B の一つだけである。 このフラグが指" +"定されると、 B(2) で作成された子プロセスは特権が必要なスケジューリング" +"ポリシーを継承しない。 詳細は B(7) を参照。" + +#. type: TP +#: build/C/man2/sched_setattr.2:162 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:173 +msgid "" +"This field specifies the nice value to be set when specifying " +"I as B or B. The nice value is a " +"number in the range -20 (high priority) to +19 (low priority); see " +"B(2)." +msgstr "" +"このフィールドは、 I に B か B が指定" +"された場合に設定される nice 値を指定する。 nice 値は -20 (高優先度) から +19 " +"(低優先度) の範囲の数値である。 B(2) を参照。" + +#. type: TP +#: build/C/man2/sched_setattr.2:173 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:186 +msgid "" +"This field specifies the static priority to be set when specifying " +"I as B or B. The allowed range of " +"priorities for these policies can be determined using " +"B(2) and B(2). For other " +"policies, this field must be specified as 0." +msgstr "" +"このフィールドは、 I に B か B が指定され" +"た場合に設定される静的優先度を指定する。 これらのポリシーで指定できる優先度の" +"範囲は、 B(2) と B(2) を使っ" +"て判定できる。 他のポリシーでは、 このフィールドには 0 を指定しなければならな" +"い。" + +#. type: TP +#: build/C/man2/sched_setattr.2:186 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:195 +msgid "" +"This field specifies the \"Runtime\" parameter for deadline scheduling. The " +"value is expressed in nanoseconds. This field, and the next two fields, are " +"used only for B scheduling; for further details, see " +"B(7)." +msgstr "" +"このフィールドは、 デッドラインスケジューリングの \"Runtime\" パラメーターを" +"指定する。 この値はナノ秒単位で表現される。 このフィールドと次の 2 つのフィー" +"ルドは B スケジューリングにおいてのみ使用される。 詳細は " +"B(7) を参照。" + +#. type: TP +#: build/C/man2/sched_setattr.2:195 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:199 +msgid "" +"This field specifies the \"Deadline\" parameter for deadline scheduling. " +"The value is expressed in nanoseconds." +msgstr "" +"このフィールドは、 デッドラインスケジューリングの \"Deadline\" パラメーターを" +"指定する。 この値はナノ秒単位で表現される。" + +#. type: TP +#: build/C/man2/sched_setattr.2:199 +#, no-wrap +msgid "I" +msgstr "I" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:203 +msgid "" +"This field specifies the \"Period\" parameter for deadline scheduling. The " +"value is expressed in nanoseconds." +msgstr "" +"このフィールドは、 デッドラインスケジューリングの \"Period\" パラメーターを指" +"定する。 この値はナノ秒単位で表現される。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:210 build/C/man2/sched_setattr.2:262 +msgid "" +"The I argument is provided to allow for future extensions to the " +"interface; in the current implementation it must be specified as 0." +msgstr "" +"I 引き数は、このインターフェースの将来の拡張のために用意されている。 " +"現在の実装では 0 を指定しなければならない。" + +#. type: SS +#: build/C/man2/sched_setattr.2:210 +#, no-wrap +msgid "sched_getattr()" +msgstr "sched_getattr()" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:221 +msgid "" +"The B() system call fetches the scheduling policy and the " +"associated attributes for the thread whose ID is specified in I. If " +"I equals zero, the scheduling policy and attributes of the calling " +"thread will be retrieved." +msgstr "" +"B() システムコールは、 I で指定された ID を持つスレッドの" +"スケジューリングポリシーと関連する属性を取得する。 I が 0 の場合、呼び出" +"したスレッド自身のスケジューリングポリシーと関連する属性を取得する。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:231 +msgid "" +"The I argument should be set to the size of the I " +"structure as known to user space. The value must be at least as large as " +"the size of the initially published I structure, or the call " +"fails with the error B." +msgstr "" +"I 引き数には、 ユーザー空間での I 構造体の大きさを設定す" +"る。 この値は、 少なくとも初期バージョンの I 構造体のサイズでなけ" +"ればならない。 そうでなかった場合、 エラー B で呼び出しが失敗する。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:241 +msgid "" +"The retrieved scheduling attributes are placed in the fields of the " +"I structure pointed to by I. The kernel sets I " +"to the size of its I structure." +msgstr "" +"取得したスケジューリング属性は、 I が指す I 構造体の各" +"フィールドに格納される。 カーネルは I に I 構造体のサ" +"イズを設定する。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:257 +msgid "" +"If the caller-provided I buffer is larger than the kernel's " +"I structure, the additional bytes in the user-space structure " +"are not touched. If the caller-provided structure is smaller than the " +"kernel I structure and the kernel needs to return values outside " +"the provided space, B() fails with the error B. As " +"with B(), these semantics allow for future extensibility of " +"the interface." +msgstr "" +"呼び出し側が提供した I バッファーがカーネルの I 構造体より" +"も大きい場合、 ユーザー空間構造体の残りのバイトは変更されない。 呼び出し側が" +"提供した構造体がカーネルの I 構造体よりも小さく、 カーネルが値を" +"返すのにもっと大きな空間が必要な場合、 B() はエラー B " +"で失敗する。 B() と同様、 この動作はこのインターフェースの将来" +"の拡張性を考慮してのものである。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:271 +msgid "" +"On success, B() and B() return 0. On error, " +"-1 is returned, and I is set to indicate the cause of the error." +msgstr "" +"成功した場合は B() と B() は 0 を返す。 エ" +"ラーの場合は -1 が返され、 エラーの原因を示す値が I に設定される。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:276 +msgid "" +"B() and B() can both fail for the following " +"reasons:" +msgstr "" +"B() と B() の両方が以下の理由で失敗する。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:284 +msgid "I is NULL; or I is negative; or I is not zero." +msgstr "" +"I が NULL である。 I が負である。 I が 0 以外である。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:293 +msgid "In addition, B() can fail for the following reasons:" +msgstr "さらに、 B() は以下の理由でも失敗する。" + +#. type: TP +#: build/C/man2/sched_setattr.2:293 build/C/man2/sched_setattr.2:310 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:300 +msgid "The buffer specified by I and I is too small." +msgstr "I と I で指定されたバッファーが小さすぎる。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:306 +msgid "" +"I is invalid; that is, it is smaller than the initial version of the " +"I structure (48 bytes) or larger than the system page size." +msgstr "" +"I が無効である。つまり、 最初のバージョンの I 構造体 (48 バ" +"イト) よりも小さいか、 システムのページサイズよりも大きい。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:310 +msgid "In addition, B() can fail for the following reasons:" +msgstr "さらに、 B() は以下の理由でも失敗する。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:318 +msgid "" +"The buffer specified by I and I is larger than the kernel " +"structure, and one or more of the excess bytes is nonzero." +msgstr "" +"I と I で指定されたバッファーがカーネル構造体よりも大きく、 一つ" +"以上の超過バイトが 0 でなかった。" + +#. type: TP +#: build/C/man2/sched_setattr.2:318 +#, no-wrap +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:323 +msgid "B admission control failure, see B(7)." +msgstr "B の流入制御の失敗については B(7) を参照。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:339 +msgid "" +"I is not one of the recognized policies; I contains a flag other than B; or " +"I is invalid; or I is " +"B and the deadline scheduling parameters in I are " +"invalid." +msgstr "" +"I が認識できるポリシーではない。 I に " +"B 以外のフラグが含まれている。 I が無効である。 I が B " +"で、 I に指定されたデッドラインスケジューリングパラメーターが無効であ" +"る。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:342 +msgid "The caller does not have appropriate privileges." +msgstr "呼び出した元が適切な特権を持っていない。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:348 +msgid "" +"The caller's CPU affinity mask does not include all CPUs in the system (see " +"B(2))." +msgstr "" +"呼び出し元の CPU affinity マスクにシステムの全ての CPU のうち含まれていないも" +"のがある (B(2) を参照)。" + +#. FIXME . Add glibc version +#. type: Plain text +#: build/C/man2/sched_setattr.2:351 +msgid "These system calls first appeared in Linux 3.14." +msgstr "これらのシステムコールは Linux 3.14 で初めて登場した。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:353 +msgid "These system calls are nonstandard Linux extensions." +msgstr "これらのシステムコールは非標準の Linux による拡張である。" + +#. type: Plain text +#: build/C/man2/sched_setattr.2:369 +msgid "" +"B() provides a superset of the functionality of " +"B(2), B(2), B(2), and (other than " +"the ability to set the priority of all processes belonging to a specified " +"user or all processes in a specified group) B(2). " +"Analogously, B() provides a superset of the functionality of " +"B(2), B(2), and (partially) " +"B(2)." +msgstr "" +"B() は、B(2), B(2), " +"B(2) の機能および B の一部機能を持つ (ただし、" +"B(2) の、指定されたユーザーに所属するすべてのプロセスまたは指定" +"されたグループのすべてのプロセスの優先度を設定する機能は除く)。 同様に、 " +"B() は B(2), B(2) の機能お" +"よび B(2) の一部機能を持つ。" + +#. FIXME . patch sent to Peter Zijlstra +#. In Linux versions up to up 3.15, +#. FIXME . patch from Peter Zijlstra pending +#. .BR sched_setattr () +#. allowed a negative +#. .I attr.sched_policy +#. value. +#. type: Plain text +#: build/C/man2/sched_setattr.2:385 +msgid "" +"In Linux versions up to 3.15, B() failed with the error " +"B instead of B for the case described in ERRORS." +msgstr "" +"バージョン 3.15 までの Linux では、 B() は、 エラーの節に書か" +"れている B の場合にエラーB で失敗していた。" #. type: Plain text -#: build/C/man2/sched_setaffinity.2:230 +#: build/C/man2/sched_setattr.2:407 msgid "" -"B(2), B(2), B(2), B(2), B(2), " -"B(2), B(2), " -"B(2), B(2), B(2), " -"B(3), B(3), B(3), " -"B(7), B(7)" +"B(1), B(2), B(2), " +"B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(3), " +"B(3), B(3), B(7), " +"B(7), B(7)" msgstr "" -"B(2), B(2), B(2), B(2), B(2), " -"B(2), B(2), " -"B(2), B(2), B(2), " -"B(3), B(3), B(3), " -"B(7), B(7)" +"B(1), B(2), B(2), " +"B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(3), " +"B(3), B(3), B(7), " +"B(7), B(7)" #. type: TH -#: build/C/man2/sched_setparam.2:31 +#: build/C/man2/sched_setparam.2:30 #, no-wrap msgid "SCHED_SETPARAM" msgstr "SCHED_SETPARAM" +#. type: TH +#: build/C/man2/sched_setparam.2:30 +#, no-wrap +msgid "2014-05-11" +msgstr "2014-05-11" + #. type: Plain text -#: build/C/man2/sched_setparam.2:34 +#: build/C/man2/sched_setparam.2:33 msgid "sched_setparam, sched_getparam - set and get scheduling parameters" msgstr "" -"sched_setparam, sched_getparam - スケジューリング・パラメータの設定と取得を行" +"sched_setparam, sched_getparam - スケジューリングパラメーターの設定と取得を行" "なう" #. type: Plain text -#: build/C/man2/sched_setparam.2:37 build/C/man2/sched_setscheduler.2:54 -#, no-wrap -msgid "B<#include Esched.hE>\n" -msgstr "B<#include Esched.hE>\n" - -#. type: Plain text -#: build/C/man2/sched_setparam.2:39 +#: build/C/man2/sched_setparam.2:38 #, no-wrap msgid "BIB<, const struct sched_param *>IB<);>\n" msgstr "BIB<, const struct sched_param *>IB<);>\n" #. type: Plain text -#: build/C/man2/sched_setparam.2:41 +#: build/C/man2/sched_setparam.2:40 #, no-wrap msgid "BIB<, struct sched_param *>IB<);>\n" msgstr "BIB<, struct sched_param *>IB<);>\n" #. type: Plain text -#: build/C/man2/sched_setparam.2:47 build/C/man2/sched_setscheduler.2:66 +#: build/C/man2/sched_setparam.2:46 #, no-wrap msgid "" "B\n" #. type: Plain text -#: build/C/man2/sched_setparam.2:61 +#: build/C/man2/sched_setparam.2:60 msgid "" "B() sets the scheduling parameters associated with the " "scheduling policy for the process identified by I. If I is zero, " "then the parameters of the calling process are set. The interpretation of " "the argument I depends on the scheduling policy of the process " -"identified by I. See B(2) for a description of " -"the scheduling policies supported under Linux." +"identified by I. See B(7) for a description of the scheduling " +"policies supported under Linux." msgstr "" "B() は I で指定されたプロセスのスケジューリング方針 " -"(scheduling policy) に 関連するスケジューリング・パラメータを設定する。 " -"I が 0 ならば、呼び出し元のプロセスのパラメータが設定される。 引き数 " +"(scheduling policy) に 関連するスケジューリングパラメーターを設定する。 " +"I が 0 ならば、呼び出し元のプロセスのパラメーターが設定される。 引き数 " "I の解釈は、 I で指定されたプロセスのスケジューリング方針によって" -"異なる。 Linux でサポートされているスケジューリング方針の説明は " -"B(2) を参照のこと。" +"異なる。 Linux でサポートされているスケジューリング方針の説明は B(7) " +"を参照のこと。" #. type: Plain text -#: build/C/man2/sched_setparam.2:67 +#: build/C/man2/sched_setparam.2:66 msgid "" "B() retrieves the scheduling parameters for the process " "identified by I. If I is zero, then the parameters of the calling " "process are retrieved." msgstr "" -"B() は I で指定されたプロセスのスケジューリング・パラ" -"メータを取得する。 I が 0 ならば、呼び出し元のプロセスのパラメータを取得" +"B() は I で指定されたプロセスのスケジューリングパラメー" +"ターを取得する。 I が 0 ならば、呼び出し元のプロセスのパラメーターを取得" "する。" #. type: Plain text -#: build/C/man2/sched_setparam.2:76 +#: build/C/man2/sched_setparam.2:75 msgid "" "B() checks the validity of I for the scheduling " -"policy of the process. The value Isched_priority> must lie " +"policy of the thread. The value Isched_priority> must lie " "within the range given by B(2) and " "B(2)." msgstr "" -"B() はプロセスのスケジューリング方針における I の妥当" +"B() はスレッドのスケジューリング方針における I の妥当" "性をチェックする。 Isched_priority> の値は " "B(2) と B(2) の範囲に入って" "いなければならない。" #. type: Plain text -#: build/C/man2/sched_setparam.2:80 +#: build/C/man2/sched_setparam.2:79 msgid "" "For a discussion of the privileges and resource limits related to scheduling " -"priority and policy, see B(2)." +"priority and policy, see B(7)." msgstr "" "スケジューリングの優先度と方針に関連する特権とリソース制限の 議論に関しては " -"B(2) を参照のこと。" +"B(7) を参照のこと。" #. type: Plain text -#: build/C/man2/sched_setparam.2:88 +#: build/C/man2/sched_setparam.2:87 msgid "" "POSIX systems on which B() and B() are " "available define B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." @@ -3060,7 +4578,7 @@ msgstr "" "る。" #. type: Plain text -#: build/C/man2/sched_setparam.2:97 +#: build/C/man2/sched_setparam.2:96 msgid "" "On success, B() and B() return 0. On " "error, -1 is returned, and I is set appropriately." @@ -3069,451 +4587,1071 @@ msgstr "" "ラーの場合は -1 が返され、 I が適切に設定される。" #. type: Plain text -#: build/C/man2/sched_setparam.2:102 +#: build/C/man2/sched_setparam.2:104 +msgid "Invalid arguments: I is NULL or I is negative" +msgstr "無効な引き数: I が NULL である、または I が負である。" + +#. type: Plain text +#: build/C/man2/sched_setparam.2:109 +msgid "" +"(B()) The argument I does not make sense for the " +"current scheduling policy." +msgstr "" +"(B()) 引き数 I が現在のスケジューリング方針においては " +"無意味である。" + +#. type: Plain text +#: build/C/man2/sched_setparam.2:116 msgid "" -"The argument I does not make sense for the current scheduling policy." -msgstr "引き数 I が現在のスケジューリング方針においては 無意味である。" +"(B()) The calling process does not have appropriate " +"privileges (Linux: does not have the B capability)." +msgstr "" +"(B()) 呼び出し元のプロセスが適切な特権を持っていない (Linux " +"では、 B ケーパビリティを持っていない)。" + +#. type: Plain text +#: build/C/man2/sched_setparam.2:119 +msgid "The process whose ID is I could not be found." +msgstr "プロセス ID I のプロセスが見つからなかった。" #. type: Plain text -#: build/C/man2/sched_setparam.2:108 +#: build/C/man2/sched_setparam.2:127 msgid "" -"The calling process does not have appropriate privileges (Linux: does not " -"have the B capability)." +"Scheduling parameters are in fact per-thread attributes on Linux; see " +"B(7)." msgstr "" -"呼び出し元のプロセスが適切な特権を持っていない (Linux では、 B " -"ケーパビリティを持っていない)。" +"Linux では、スケジューリングパラメーターは実際にはスレッド単位の属性である。 " +"B(7) 参照。" #. type: Plain text -#: build/C/man2/sched_setparam.2:124 +#: build/C/man2/sched_setparam.2:142 msgid "" "B(2), B(2), B(2), " -"B(2), B(2), B" -"(2), B(2), B(2), B(2), " -"B(7)" +"B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(7), B(7)" msgstr "" "B(2), B(2), B(2), " -"B(2), B(2), B" -"(2), B(2), B(2), B(2), " -"B(7)" +"B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(7), B(7)" #. type: TH -#: build/C/man2/sched_setscheduler.2:47 +#: build/C/man2/sched_setscheduler.2:26 #, no-wrap msgid "SCHED_SETSCHEDULER" msgstr "SCHED_SETSCHEDULER" -#. type: TH -#: build/C/man2/sched_setscheduler.2:47 -#, fuzzy, no-wrap -#| msgid "2010-09-10" -msgid "2011-09-19" -msgstr "2010-09-10" - #. type: Plain text -#: build/C/man2/sched_setscheduler.2:51 +#: build/C/man2/sched_setscheduler.2:30 msgid "" "sched_setscheduler, sched_getscheduler - set and get scheduling policy/" "parameters" msgstr "" -"sched_setscheduler, sched_getscheduler - スケジューリング・ポリシーとパラメー" -"タを設定/取得する" +"sched_setscheduler, sched_getscheduler - スケジューリングポリシーとパラメー" +"ターを設定/取得する" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:56 +#: build/C/man2/sched_setscheduler.2:35 #, no-wrap msgid "BIB<, int >IB<,>\n" msgstr "BIB<, int >IB<,>\n" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:58 +#: build/C/man2/sched_setscheduler.2:37 #, no-wrap msgid "B< const struct sched_param *>IB<);>\n" msgstr "B< const struct sched_param *>IB<);>\n" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:60 +#: build/C/man2/sched_setscheduler.2:39 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:77 +#: build/C/man2/sched_setscheduler.2:49 +msgid "" +"The B() system call sets both the scheduling policy and " +"parameters for the thread whose ID is specified in I. If I equals " +"zero, the scheduling policy and parameters of the calling thread will be set." +msgstr "" +"B() システムコールは、 I で指定された ID を持つス" +"レッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定す" +"る。 I が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとス" +"ケジューリングパラメーターが設定される。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:53 +msgid "" +"The scheduling parameters are specified in the I argument, which is a " +"pointer to a structure of the following form:" +msgstr "" +"スケジューリングパラメーターは I 引き数で、以下の形式の構造体へのポイ" +"ンターを指定する。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:61 +#, no-wrap +msgid "" +"struct sched_param {\n" +" ...\n" +" int sched_priority;\n" +" ...\n" +"};\n" +msgstr "" +"struct sched_param {\n" +" ...\n" +" int sched_priority;\n" +" ...\n" +"};\n" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:69 +msgid "" +"In the current implementation, the structure contains only one field, " +"I. The interpretation of I depends on the selected " +"policy." +msgstr "" +"現在の実装では、この構造体のフィールドは I だけである。 " +"I がどのように解釈されるかは選択されたポリシーによって変わる。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:90 +msgid "For each of the above policies, Isched_priority> must be 0." +msgstr "" +"上記のどのポリシーの場合でも、 Isched_priority> は 0 でなければな" +"らない。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:116 +msgid "" +"For each of the above policies, Isched_priority> specifies a " +"scheduling priority for the thread. This is a number in the range returned " +"by calling B(2) and B(2) " +"with the specified I. On Linux, these system calls return, " +"respectively, 1 and 99." +msgstr "" +"上記のどのポリシーの場合でも、 Isched_priority> はそのスレッドの" +"スケジューリングポリシーを指定する。 指定された I で " +"I(2) と I(2) を呼び出した返り" +"値の範囲の数字を指定する。 Linux では、これらのシステムコールはそれぞれ 1 と " +"99 を返す。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:129 +msgid "" +"Since Linux 2.6.32, the B flag can be ORed in I " +"when calling B(). As a result of including this flag, " +"children created by B(2) do not inherit privileged scheduling " +"policies. See B(7) for details." +msgstr "" +"Linux 2.6.32 以降では、 B() を呼び出す際に I に " +"B フラグを OR で指定できる。このフラグが指定されると、 " +"B(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承" +"しない。 詳細は B(7) を参照。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:135 +msgid "" +"B() returns the current scheduling policy of the thread " +"identified by I. If I equals zero, the policy of the calling " +"thread will be retrieved." +msgstr "" +"B() は I で識別されるスレッドの現在のスケジューリン" +"グポリシーを返す。I が 0 ならば、呼び出した スレッド自身のスケジューリン" +"グポリシーが返される。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:145 +msgid "" +"On success, B() returns zero. On success, " +"B() returns the policy for the thread (a nonnegative " +"integer). On error, both calls return -1, and I is set appropriately." +msgstr "" +"成功した場合、 B() は 0 を返す。 成功した場合、 " +"B() は現在のそのスレッドのポリシー (非負の整数) を返" +"す。 エラーの場合、 どちらのコールも -1 を返し、 I が適切に設定され" +"る。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:153 +msgid "Invalid arguments: I is negative or I is NULL." +msgstr "無効な引き数: I が負である、または I が NULL である。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:158 +msgid "" +"(B()) I is not one of the recognized policies." +msgstr "(B()) I が認識できるポリシーではない。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:164 +msgid "" +"(B()) I does not make sense for the specified " +"I." +msgstr "" +"(B()) 引き数 I が指定された I では意味を持" +"たない。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:167 +msgid "The calling thread does not have appropriate privileges." +msgstr "呼び出したスレッドが適切な特権を持っていない。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:173 +msgid "" +"POSIX.1-2001 (but see BUGS below). The B and B " +"policies are Linux-specific." +msgstr "" +"POSIX.1-2001 (但し、下記のバグの節も参照)。 B と B " +"ポリシーは Linux 固有である。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:177 +msgid "" +"Further details of the semantics of all of the above \"normal\" and \"real-" +"time\" scheduling policies can be found in B(7)." +msgstr "" +"上記の「通常」および「リアルタイム」スケジューリングポリシーの動作の詳細な説" +"明は B(7) にある。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:185 +msgid "" +"POSIX systems on which B() and B() " +"are available define B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." +msgstr "" +"POSIX システムでは Iunistd.hE> に B<_POSIX_PRIORITY_SCHEDULING> が" +"定義されている場合にのみ B() と " +"B() が使用できる。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:193 +msgid "" +"POSIX.1 does not detail the permissions that an unprivileged thread requires " +"in order to call B(), and details vary across systems. " +"For example, the Solaris 7 manual page says that the real or effective user " +"ID of the caller must match the real user ID or the save set-user-ID of the " +"target." +msgstr "" +"POSIX.1 は、非特権スレッドが B() を呼び出すために必要な" +"権限の詳細を規定しておらず、 詳細はシステムにより異なる。 例えば、Solaris 7 " +"のマニュアルページでは、 呼び出し元の実ユーザー ID または実効ユーザー ID が " +"設定対象の実ユーザー ID か保存 (save) set-user-ID と 一致していなければならな" +"い、となっている。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:214 +msgid "" +"The scheduling policy and parameters are in fact per-thread attributes on " +"Linux. The value returned from a call to B(2) can be passed in the " +"argument I. Specifying I as 0 will operate on the attributes of " +"the calling thread, and passing the value returned from a call to " +"B(2) will operate on the attributes of the main thread of the " +"thread group. (If you are using the POSIX threads API, then use " +"B(3), B(3), and " +"B(3), instead of the B(2) system calls.)" +msgstr "" +"Linux では、 スケジューリングポリシーとスケジューリングパラメーターは、 実際" +"にはスレッド単位の属性である。 B(2) の呼び出しの返り値をこのシステム" +"コールの I 引き数として渡すことができる。 I に 0 を指定すると、 呼" +"び出し元のスレッドの属性が設定される。 B(2) コールからの返り値を " +"I に指定すると、 スレッドグループのメインスレッドの属性が設定される " +"(POSIX スレッド API を使用している場合は、 B(2) システムコールの代わ" +"りに B(3), B(3), and " +"B(3) を使用すること)。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:222 +msgid "" +"POSIX says that on success, B() should return the " +"previous scheduling policy. Linux B() does not conform " +"to this requirement, since it always returns 0 on success." +msgstr "" +"POSIX では、成功時に B() は直前のスケジューリングポリ" +"シーを返すべきとされている。 Linux の B() はこの要求仕様" +"に準拠しておらず、 成功時には常に 0 を返す。" + +#. type: Plain text +#: build/C/man2/sched_setscheduler.2:241 msgid "" -"B() sets both the scheduling policy and the associated " -"parameters for the process whose ID is specified in I. If I " -"equals zero, the scheduling policy and parameters of the calling process " -"will be set. The interpretation of the argument I depends on the " -"selected policy. Currently, Linux supports the following \"normal\" (i.e., " -"non-real-time) scheduling policies:" +"B(1), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(7), B(7), B(7)" msgstr "" -"B() は I で指定された ID を持つプロセスのスケジュー" -"リング・ポリシーや それに関連するパラメータを設定する。I が 0 の場合は " -"呼び出したプロセスのスケジューリング・ポリシーとパラメータが設定される。 引き" -"数 I の解釈は選択されたポリシーによる。 現在のところ、Linux では 以下" -"に示す「通常」(リアルタイムでない) スケジューリング・ポリシーが サポートされ" -"ている。" +"B(1), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(7), B(7), B(7)" + +#. type: TH +#: build/C/man2/sched_yield.2:29 +#, no-wrap +msgid "SCHED_YIELD" +msgstr "SCHED_YIELD" + +#. type: Plain text +#: build/C/man2/sched_yield.2:32 +msgid "sched_yield - yield the processor" +msgstr "sched_yield - プロセッサーを空け渡す(yield)" + +#. type: Plain text +#: build/C/man2/sched_yield.2:36 +msgid "B" +msgstr "B" + +#. type: Plain text +#: build/C/man2/sched_yield.2:41 +msgid "" +"B() causes the calling thread to relinquish the CPU. The " +"thread is moved to the end of the queue for its static priority and a new " +"thread gets to run." +msgstr "" +"B() を呼び出すことで、呼び出したスレッドが CPU の使用権を手放す" +"ことができる。 そのスレッドは、そのスレッドの静的プライオリティのキューの末尾" +"に 移動し、新しいスレッドが走り始める。" + +#. type: Plain text +#: build/C/man2/sched_yield.2:48 +msgid "" +"On success, B() returns 0. On error, -1 is returned, and " +"I is set appropriately." +msgstr "" +"成功した場合は B() は 0 を返す。 エラーの場合は -1 が返され、 " +"I が適切に設定される。" + +#. type: Plain text +#: build/C/man2/sched_yield.2:52 +msgid "In the Linux implementation, B() always succeeds." +msgstr "Linux の実装では、 B() は常に成功する。" + +#. type: Plain text +#: build/C/man2/sched_yield.2:59 +msgid "" +"If the calling thread is the only thread in the highest priority list at " +"that time, it will continue to run after a call to B()." +msgstr "" +"B() を呼び出した時点で最大優先度のリストの中に呼び出し元のス" +"レッドしか 存在しなければ、そのスレッドは呼び出し後も走り続けることになる。" + +#. type: Plain text +#: build/C/man2/sched_yield.2:66 +msgid "" +"POSIX systems on which B() is available define " +"B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." +msgstr "" +"POSIX システムで B() は Iunistd.hE> に " +"B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。" + +#. type: Plain text +#: build/C/man2/sched_yield.2:79 +msgid "" +"Strategic calls to B() can improve performance by giving other " +"threads or processes a chance to run when (heavily) contended resources (e." +"g., mutexes) have been released by the caller. Avoid calling " +"B() unnecessarily or inappropriately (e.g., when resources " +"needed by other schedulable threads are still held by the caller), since " +"doing so will result in unnecessary context switches, which will degrade " +"system performance." +msgstr "" +"B() を戦略的に呼び出すことで、(極度に) 競合するリソース (mutex " +"など) を呼び出し元が解放した際に他のスレッドやプロセスに実行機会を与えること" +"で、 性能を上げることができる。 B() を必要もないのに呼び出した" +"り、不適切な場面 (例えば、他のスケジューリング 対象となるスレッドが必要とする" +"リソースを呼び出し元が保持したままの状態) で呼び出したりするのは避けること。" +"なぜなら、 B() の呼び出しより不必要なコンテキストスイッチが起こ" +"り、システム性能が 劣化する結果になるからである。" + +#. type: TH +#: build/C/man7/sched.7:32 +#, no-wrap +msgid "SCHED" +msgstr "SCHED" + +#. type: Plain text +#: build/C/man7/sched.7:35 +msgid "sched - overview of scheduling APIs" +msgstr "sched - スケジューリング API の概要" + +#. type: SS +#: build/C/man7/sched.7:36 +#, no-wrap +msgid "API summary" +msgstr "API の概要" + +#. type: Plain text +#: build/C/man7/sched.7:38 +msgid "The Linux scheduling APIs are as follows:" +msgstr "Linux のスケジューリング API は以下のとおりである。" #. type: TP -#: build/C/man2/sched_setscheduler.2:77 +#: build/C/man7/sched.7:38 #, no-wrap -msgid "B" -msgstr "B" +msgid "B(2)" +msgstr "B(2)" -#. In the 2.6 kernel sources, SCHED_OTHER is actually called -#. SCHED_NORMAL. #. type: Plain text -#: build/C/man2/sched_setscheduler.2:82 -msgid "the standard round-robin time-sharing policy;" -msgstr "標準の、ラウンドロビンによる時分割型のスケジューリング・ポリシー。" +#: build/C/man7/sched.7:41 +msgid "Set the scheduling policy and parameters of a specified thread." +msgstr "指定されたスレッドのスケジューリングポリシーとパラメーターを設定する。" #. type: TP -#: build/C/man2/sched_setscheduler.2:82 +#: build/C/man7/sched.7:41 #, no-wrap -msgid "B" -msgstr "B" +msgid "B(2)" +msgstr "B(2)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:85 -msgid "for \"batch\" style execution of processes; and" -msgstr "「バッチ」形式でのプロセスの実行用。" +#: build/C/man7/sched.7:44 +msgid "Return the scheduling policy of a specified thread." +msgstr "指定されたスレッドのスケジューリングポリシーを返す。" #. type: TP -#: build/C/man2/sched_setscheduler.2:85 +#: build/C/man7/sched.7:44 #, no-wrap -msgid "B" -msgstr "B" +msgid "B(2)" +msgstr "B(2)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:90 -msgid "for running I low priority background jobs." -msgstr "「非常に」低い優先度で動作するバックグラウンド・ジョブ用。" +#: build/C/man7/sched.7:47 +msgid "Set the scheduling parameters of a specified thread." +msgstr "指定されたスレッドのスケジューリングパラメーターを設定する。" + +#. type: TP +#: build/C/man7/sched.7:47 +#, no-wrap +msgid "B(2)" +msgstr "B(2)" + +#. 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 +#, no-wrap +msgid "B(2)" +msgstr "B(2)" + +#. type: Plain text +#: build/C/man7/sched.7:53 +msgid "Return the minimum priority available in a specified scheduling policy." +msgstr "指定されたスケジューリングポリシーで利用可能な最小の優先度を返す。" + +#. type: TP +#: build/C/man7/sched.7:53 +#, no-wrap +msgid "B(2)" +msgstr "B(2)" + +#. type: Plain text +#: build/C/man7/sched.7:56 +msgid "Return the maximum priority available in a specified scheduling policy." +msgstr "指定されたスケジューリングポリシーで利用可能な最大の優先度を返す。" + +#. type: TP +#: build/C/man7/sched.7:56 +#, no-wrap +msgid "B(2)" +msgstr "B(2)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:94 +#: build/C/man7/sched.7:60 msgid "" -"The following \"real-time\" policies are also supported, for special time-" -"critical applications that need precise control over the way in which " -"runnable processes are selected for execution:" +"Fetch the quantum used for threads that are scheduled under the \"round-robin" +"\" scheduling policy." msgstr "" -"どの実行可能プロセスを選択するかについて、より正確な制御を必要とする 時間の制" -"約が厳しい特別なアプリケーション用として、 以下の「リアルタイム」ポリシーもサ" -"ポートされている。" +"「ラウンドロビン」スケジューリングポリシーでスケジューリグされるスレッドで使" +"用される単位時間 (quantum) を取得する。" #. type: TP -#: build/C/man2/sched_setscheduler.2:94 +#: build/C/man7/sched.7:60 #, no-wrap -msgid "B" -msgstr "B" +msgid "B(2)" +msgstr "B(2)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:97 -msgid "a first-in, first-out policy; and" -msgstr "ファーストイン、ファーストアウト型のポリシー。" +#: build/C/man7/sched.7:64 +msgid "" +"Cause the caller to relinquish the CPU, so that some other thread be " +"executed." +msgstr "" +"呼び出し元が CPU の使用権を明け渡して、 他のスレッドが実行できるようにする。" #. type: TP -#: build/C/man2/sched_setscheduler.2:97 +#: build/C/man7/sched.7:64 #, no-wrap -msgid "B" -msgstr "B" +msgid "B(2)" +msgstr "B(2)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:100 -msgid "a round-robin policy." -msgstr "ラウンドロビン型のポリシー。" +#: build/C/man7/sched.7:68 +msgid "(Linux-specific) Set the CPU affinity of a specified thread." +msgstr "(Linux 固有) 指定されたスレッドの CPU affinity を設定する。" + +#. type: TP +#: build/C/man7/sched.7:68 +#, no-wrap +msgid "B(2)" +msgstr "B(2)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:102 -msgid "The semantics of each of these policies are detailed below." -msgstr "これらのポリシーのそれぞれの動作については以下で説明する。" +#: build/C/man7/sched.7:72 +msgid "(Linux-specific) Get the CPU affinity of a specified thread." +msgstr "(Linux 固有) 指定されたスレッドの CPU affinity を取得する。" + +#. type: TP +#: build/C/man7/sched.7:72 +#, no-wrap +msgid "B(2)" +msgstr "B(2)" + +#. 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(2) and B(2)." +msgstr "" +"指定されたスレッドのスケジューリングポリシーとパラメーターを設定する。 この " +"(Linux 固有の) システムコールは B(2) と " +"B(2) の両方の機能を持つ。" + +#. type: TP +#: build/C/man7/sched.7:79 +#, no-wrap +msgid "B(2)" +msgstr "B(2)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:109 +#: build/C/man7/sched.7:87 msgid "" -"B() queries the scheduling policy currently applied to " -"the process identified by I. If I equals zero, the policy of the " -"calling process will be retrieved." +"Fetch the scheduling policy and parameters of a specified thread. This " +"(Linux-specific) system call provides a superset of the functionality of " +"B(2) and B(2)." msgstr "" -"B() は I で識別されるプロセスに現在適用されている " -"スケジューリング・ポリシーを尋ねる。I が 0 ならば、呼び出した プロセス自" -"身のスケジューリング・ポリシーが返される。" +"指定されたスレッドのスケジューリングポリシーとパラメーターを取得する。 この " +"(Linux 固有の) システムコールは B(2) と " +"B(2) の両方の機能を持つ。" #. type: SS -#: build/C/man2/sched_setscheduler.2:109 +#: build/C/man7/sched.7:87 #, no-wrap -msgid "Scheduling Policies" -msgstr "スケジューリング・ポリシー (scheduling policy)" +msgid "Scheduling policies" +msgstr "スケジューリングポリシー (scheduling policy)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:118 +#: build/C/man7/sched.7:95 msgid "" -"The scheduler is the kernel component that decides which runnable process " -"will be executed by the CPU next. Each process has an associated scheduling " -"policy and a I scheduling priority, I; these are the " -"settings that are modified by B(). The scheduler makes " -"it decisions based on knowledge of the scheduling policy and static priority " -"of all processes on the system." +"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 scheduling priority, I. 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 が対応付けられ、 " -"これらの設定は B() で変更できる。 スケジューラは、システ" -"ム上の全プロセスのスケジューリング・ポリシーと 静的優先度に関する知識に基づい" -"て決定を行う。" +"可能なスレッドを決定するものである。 各々のスレッドには、スケジューリングポリ" +"シーと 「静的」なスケジューリング優先度 I が対応付けられる。 " +"スケジューラは、システム上の全スレッドのスケジューリングポリシーと 静的優先度" +"に関する知識に基づいて決定を行う。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:123 +#: build/C/man7/sched.7:100 msgid "" -"For processes scheduled under one of the normal scheduling policies " +"For threads scheduled under one of the normal scheduling policies " "(B, B, B), I is not " "used in scheduling decisions (it must be specified as 0)." msgstr "" -"通常のスケジューリング・ポリシー (B, B, " -"B) の下でスケジューリングされるプロセスでは、 " +"通常のスケジューリングポリシー (B, B, " +"B) の下でスケジューリングされるスレッドでは、 " "I はスケジューリングの決定に使用されない (I " "には 0 を指定しなければならない)。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:137 +#: build/C/man7/sched.7:114 msgid "" "Processes scheduled under one of the real-time policies (B, " "B) have a I value in the range 1 (low) to 99 " -"(high). (As the numbers imply, real-time processes always have higher " -"priority than normal processes.) Note well: POSIX.1-2001 only requires an " -"implementation to support a minimum 32 distinct priority levels for the real-" -"time policies, and some systems supply just this minimum. Portable programs " -"should use B(2) and B(2) " -"to find the range of priorities supported for a particular policy." -msgstr "" -"リアルタイム・スケジューリング・ポリシー (B, B) の下で" -"スケジューリングされるプロセスは、 I の値は 1 (最低) から 99 " -"(最高) の範囲となる (数字から分かるように、リアルタイム・プロセスは常に通常の" -"プロセスよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1-2001 が要" -"求しているのは、 リアルタイム・ポリシーの実装において最低 32 種類の異なる優先" -"度レベルが サポートされることだけであり、いくつかのシステムではこの最低限の数" -"の 優先度しか提供されていない、ということである。 移植性が必要なプログラムで" +"(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(2) and " +"B(2) to find the range of priorities supported for " +"a particular policy." +msgstr "" +"リアルタイムスケジューリングポリシー (B, B) の下でスケ" +"ジューリングされるスレッドは、 I の値は 1 (最低) から 99 (最" +"高) の範囲となる (数字から分かるように、リアルタイムスレッドは常に通常のス" +"レッドよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1-2001 が要求" +"しているのは、 リアルタイムポリシーの実装において最低 32 種類の異なる優先度レ" +"ベルが サポートされることだけであり、いくつかのシステムではこの最低限の数の " +"優先度しか提供されていない、ということである。 移植性が必要なプログラムで" "は、 B(2) と B(2) を使っ" "て、あるポリシーがサポートする優先度の範囲を調べるべきである。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:143 +#: build/C/man7/sched.7:120 msgid "" -"Conceptually, the scheduler maintains a list of runnable processes for each " -"possible I value. In order to determine which process runs " +"Conceptually, the scheduler maintains a list of runnable threads for each " +"possible I value. In order to determine which thread runs " "next, the scheduler looks for the nonempty list with the highest static " -"priority and selects the process at the head of this list." +"priority and selects the thread at the head of this list." msgstr "" "概念としては、 スケジューラはその I の値それぞれに対して 実行" -"可能なプロセスのリストを管理している。 どのプロセスを次に実行するかを決定する" +"可能なスレッドのリストを管理している。 どのスレッドを次に実行するかを決定する" "ために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリス" -"トの先頭のプロセスを選択する。" +"トの先頭のスレッドを選択する。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:147 +#: build/C/man7/sched.7:124 msgid "" -"A process's scheduling policy determines where it will be inserted into the " -"list of processes with equal static priority and how it will move inside " -"this list." +"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 "" -"各プロセスのスケジューリング・ポリシーは、 そのプロセスが同じ静的優先度を持つ" -"プロセスのリストの中のどこに挿入され、 このリストの中をどのように移動するかを" -"決定する。" +"各スレッドのスケジューリングポリシーは、 そのスレッドが同じ静的優先度を持つス" +"レッドのリストの中のどこに挿入され、 このリストの中をどのように移動するかを決" +"定する。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:155 +#: build/C/man7/sched.7:132 msgid "" -"All scheduling is preemptive: if a process with a higher static priority " -"becomes ready to run, the currently running process will be preempted and " +"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 only determines the ordering within the list of runnable processes " -"with equal static priority." +"policy determines the ordering only within the list of runnable threads with " +"equal static priority." msgstr "" "全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度" -"のプロセスが実行可能になると、現在実行中のプロセスは実行権を 取り上げられ " -"(preempted)、そのプロセスの静的優先度レベルの待ちリストに 戻される。スケ" -"ジューリング・ポリシーは同じ静的優先度を持つ実行可能な プロセスのリストの中で" -"順番のみを決定する。" +"のスレッドが実行可能になると、現在実行中のスレッドは実行権を 取り上げられ " +"(preempted)、そのスレッドの静的優先度レベルの待ちリストに 戻される。スケ" +"ジューリングポリシーは同じ静的優先度を持つ実行可能な スレッドのリストの中で順" +"番のみを決定する。" #. type: SS -#: build/C/man2/sched_setscheduler.2:155 +#: build/C/man7/sched.7:132 #, no-wrap -msgid "SCHED_FIFO: First In-First Out scheduling" -msgstr "SCHED_FIFO: ファーストイン・ファーストアウト・スケジューリング" +msgid "SCHED_FIFO: First in-first out scheduling" +msgstr "SCHED_FIFO: ファーストインファーストアウトスケジューリング" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:164 +#: build/C/man7/sched.7:141 msgid "" -"B can only be used with static priorities higher than 0, which " -"means that when a B processes becomes runnable, it will always " +"B can be used only with static priorities higher than 0, which " +"means that when a B threads becomes runnable, it will always " "immediately preempt any currently running B, B, or " -"B process. B is a simple scheduling algorithm " -"without time slicing. For processes scheduled under the B " -"policy, the following rules apply:" +"B thread. B is a simple scheduling algorithm " +"without time slicing. For threads scheduled under the B policy, " +"the following rules apply:" msgstr "" "B は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 " -"B プロセスが実行可能になった場合、 そのポリシーが " -"B、 B、 B の 現在実行中のプロセスは直ち" -"に実行権を取り上げられる。 B は時分割のない単純なスケジューリン" -"グ・アルゴリズムである。 B ポリシーでスケジューリングされているプ" -"ロセスには以下の ルールが適用される:" +"B スレッドが実行可能になった場合、 そのポリシーが " +"B、 B、 B の 現在実行中のスレッドは直ち" +"に実行権を取り上げられる。 B は時分割のない単純なスケジューリング" +"アルゴリズムである。 B ポリシーでスケジューリングされているスレッ" +"ドには以下の ルールが適用される:" #. type: IP -#: build/C/man2/sched_setscheduler.2:164 build/C/man2/sched_setscheduler.2:169 -#: build/C/man2/sched_setscheduler.2:172 build/C/man2/sched_setscheduler.2:186 -#: build/C/man2/sched_setscheduler.2:288 build/C/man2/sched_setscheduler.2:296 -#: build/C/man2/sched_setscheduler.2:337 build/C/man2/sched_setscheduler.2:345 -#: build/C/man2/sched_setscheduler.2:350 build/C/man2/sched_setscheduler.2:355 +#: 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/man2/sched_setscheduler.2:169 +#: build/C/man7/sched.7:146 msgid "" -"A B process that has been preempted by another process of higher " +"A B 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 processes of higher priority are blocked again." +"execution as soon as all threads of higher priority are blocked again." msgstr "" -"より高い優先度の他のプロセスによって取って代わられた B プロセスは" -"その優先度のリストの先頭に留まり続け、 より高い優先度のプロセス全てが停止 " +"より高い優先度の他のスレッドによって取って代わられた B スレッドは" +"その優先度のリストの先頭に留まり続け、 より高い優先度のスレッド全てが停止 " "(block) した場合に実行を再開する。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:172 +#: build/C/man7/sched.7:149 msgid "" -"When a B process becomes runnable, it will be inserted at the " -"end of the list for its priority." +"When a B thread becomes runnable, it will be inserted at the end " +"of the list for its priority." msgstr "" -"B プロセスが実行可能になった時、その優先度のリストの最後 に挿入さ" +"B スレッドが実行可能になった時、その優先度のリストの最後 に挿入さ" "れる。" -#. In 2.2.x and 2.4.x, the process is placed at the front of the queue -#. In 2.0.x, the Right Thing happened: the process went to the back -- MTK +#. 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/sched_setscheduler.2:186 +#: build/C/man7/sched.7:164 msgid "" -"A call to B() or B(2) will put the " -"B (or B) process identified by I at the start of " -"the list if it was runnable. As a consequence, it may preempt the currently " -"running process if it has the same priority. (POSIX.1-2001 specifies that " -"the process should go to the end of the list.)" +"A call to B(2), B(2), or " +"B(2) will put the B (or B) thread " +"identified by I 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 "" -"B() や B(2) は I で指定された " -"B (または B) プロセスが 実行可能な場合、リストの最初に" -"置く。 結果として、もし優先度が同じだった場合、 現在実行中のプロセスに先んじ" -"るかもしれない。 (POSIX.1-2001 ではプロセスはリストの最後に行くべきと規定され" -"ている。)" +"B(2), B(2), B(2) は " +"I で指定された B (または B) スレッドが 実行可能な" +"場合、リストの最初に置く。 結果として、もし優先度が同じだった場合、 現在実行" +"中のスレッドに先んじるかもしれない。 (POSIX.1-2001 ではスレッドはリストの最後" +"に行くべきと規定されている。)" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:190 -msgid "" -"A process calling B(2) will be put at the end of the list." -msgstr "B(2) を呼び出したプロセスはリストの最後に置かれる。" +#: build/C/man7/sched.7:168 +msgid "A thread calling B(2) will be put at the end of the list." +msgstr "B(2) を呼び出したスレッドはリストの最後に置かれる。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:194 +#: build/C/man7/sched.7:172 msgid "" -"No other events will move a process scheduled under the B policy " -"in the wait list of runnable processes with equal static priority." +"No other events will move a thread scheduled under the B policy " +"in the wait list of runnable threads with equal static priority." msgstr "" -"その他のイベントによって B ポリシーで スケジューリングされるプロ" -"セスが同じ優先度の実行可能な プロセスの待ちリストの中を移動することはない。" +"その他のイベントによって B ポリシーでスケジューリングされるスレッ" +"ドが同じ優先度の実行可能なスレッドの待ちリストの中を移動することはない。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:199 +#: build/C/man7/sched.7:177 msgid "" -"A B process runs until either it is blocked by an I/O request, " -"it is preempted by a higher priority process, or it calls B(2)." +"A B thread runs until either it is blocked by an I/O request, it " +"is preempted by a higher priority thread, or it calls B(2)." msgstr "" -"B プロセスは I/O 要求によって停止するか、 より高い優先度のプロセ" -"スによって置きかえられるか、 B(2) を呼び出すまで実行を続ける。" +"B スレッドは I/O 要求によって停止するか、 より高い優先度のスレッ" +"ドによって置きかえられるか、 B(2) を呼び出すまで実行を続ける。" #. type: SS -#: build/C/man2/sched_setscheduler.2:199 +#: build/C/man7/sched.7:177 #, no-wrap -msgid "SCHED_RR: Round Robin scheduling" -msgstr "SCHED_RR: ラウンド・ロビン (round robin) ・スケジューリング" +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/sched_setscheduler.2:218 +#: build/C/man7/sched.7:196 msgid "" "B is a simple enhancement of B. Everything described " -"above for B also applies to B, except that each " -"process is only allowed to run for a maximum time quantum. If a B " -"process 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 process that has been preempted by a higher priority process and " -"subsequently resumes execution as a running process will complete the " -"unexpired portion of its round robin time quantum. The length of the time " -"quantum can be retrieved using B(2)." -msgstr "" -"B は B の単純な拡張である。 上述された B に" -"関する記述は全て B に 適用できる。異なるのはそれぞれのプロセスは最" -"大時間単位までしか実行できない ということである。B プロセスが時間単" -"位と同じかそれより 長い時間実行されると、その優先度のリストの最後に置かれ" -"る。 より高い優先度のプロセスによって置きかえられ、その後実行を再開した " -"B プロセスは、そのラウンド・ロビン時間単位を完全に使い切る まで実行" -"される。その時間単位の長さは B(2) を使って取得でき" -"る。" +"above for B also applies to B, except that each thread " +"is allowed to run only for a maximum time quantum. If a B 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 " +"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(2)." +msgstr "" +"B は B の単純な拡張である。 上述された\n" +"B に関する記述は全て B に 適用できる。異なるのは\n" +"それぞれのスレッドは最大時間単位までしか実行できない ということである。\n" +"B スレッドが時間単位と同じかそれより 長い時間実行されると、\n" +"その優先度のリストの最後に置かれる。 より高い優先度のスレッドによって\n" +"置きかえられ、その後実行を再開した B スレッドは、そのラウンド\n" +"ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは\n" +"B(2) を使って取得できる。" + +#. type: SS +#: build/C/man7/sched.7:196 +#, no-wrap +msgid "SCHED_DEADLINE: Sporadic task model deadline scheduling" +msgstr "SCHED_DEADLINE: 散発タスクモデルのデッドラインスケジューリング" + +#. type: Plain text +#: build/C/man7/sched.7:208 +msgid "" +"Since version 3.14, Linux provides a deadline scheduling policy " +"(B). 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(2) and " +"B(2) system calls." +msgstr "" +"バージョン 3.14 以降では、 Linux はデッドラインスケジューリングポリシー " +"(B) が提供される。 現在のところ、 このポリシーは GEDF " +"(Global Earliest Deadline First) を使って CBS (Constant Bandwidth Server) と" +"の組み合わせで実装されている。 このポリシーと関連する属性の設定、取得を行うに" +"は、 Linux 固有のシステムコール B(2) と B(2) を" +"使用する必要がある。" + +#. type: Plain text +#: build/C/man7/sched.7:226 +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, before which it should finish execution, and a I, 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 (also referred to as the request time or release time). The " +"I is the time at which a task starts its execution. The " +"I is thus obtained by adding the relative deadline to the " +"arrival time." +msgstr "" +"散発タスク (sporadic task) はジョブ列を持つタスクで、 各ジョブは期間 " +"(period) あたり多くとも 1 回だけ有効化される。 各ジョブには I (相対デッドライン) と I (計算時間) がある。 相対" +"デッドラインは、そのジョブがそのデッドラインより前に実行が終了すべきであるこ" +"とを示す。 計算時間は、このジョブを実行するのに必要な CPU 時間である。 新しい" +"ジョブを実行する必要が出てタスクが起こされる時点は I (到着時" +"刻) と呼ばれる (要求時刻 (request time) や解放時刻 (release time) と呼ばれる" +"こともある)。 I はタスクが実行を開始する時刻である。 したがっ" +"て、 I (絶対デッドライン) は到着時刻に相対デッドラインを加" +"算することで求められる。" + +#. type: Plain text +#: build/C/man7/sched.7:228 +msgid "The following diagram clarifies these terms:" +msgstr "以下の図はこれらの用語をまとめたものである。" + +#. type: Plain text +#: build/C/man7/sched.7:239 +#, no-wrap +msgid "" +"arrival/wakeup absolute deadline\n" +" | start time |\n" +" | | |\n" +" v v v\n" +"-----x--------xooooooooooooooooo--------x--------x---\n" +" |E- comp. time -E|\n" +" |E------- relative deadline ------E|\n" +" |E-------------- period -------------------E|\n" +msgstr "" +"arrival/wakeup absolute deadline\n" +" | start time |\n" +" | | |\n" +" v v v\n" +"-----x--------xooooooooooooooooo--------x--------x---\n" +" |E- comp. time -E|\n" +" |E------- relative deadline ------E|\n" +" |E-------------- period -------------------E|\n" + +#. type: Plain text +#: build/C/man7/sched.7:258 +msgid "" +"When setting a B policy for a thread using " +"B(2), one can specify three parameters: I, " +"I, and I. 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 scheduling, we have:" +msgstr "" +"B(2) を使ってスレッドに B ポリシーを設定する" +"際、 I, I, I の 3 つのパラメーターを指定することが" +"できる。 これらのパラメーターは必ずしも上で述べた用語に対応しているわけではな" +"い。 よくある方法としては、 Runtime に平均計算時間 (もしくはハードリアルタイ" +"ムタスクの場合は最悪ケースの実行時間) よりも大きな値を、 Deadline に相対デッ" +"ドラインを、 Period にタスクの期間 (period) を設定する。 したがって、 " +"B スケジューリングでは、 以下のようになる。" + +#. type: Plain text +#: build/C/man7/sched.7:269 +#, no-wrap +msgid "" +"arrival/wakeup absolute deadline\n" +" | start time |\n" +" | | |\n" +" v v v\n" +"-----x--------xooooooooooooooooo--------x--------x---\n" +" |E-- Runtime -------E|\n" +" |E----------- Deadline -----------E|\n" +" |E-------------- Period -------------------E|\n" +msgstr "" +"arrival/wakeup absolute deadline\n" +" | start time |\n" +" | | |\n" +" v v v\n" +"-----x--------xooooooooooooooooo--------x--------x---\n" +" |E-- Runtime -------E|\n" +" |E----------- Deadline -----------E|\n" +" |E-------------- Period -------------------E|\n" + +#. 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/man7/sched.7:289 +msgid "" +"The three deadline-scheduling parameters correspond to the I, " +"I, and I fields of the I " +"structure; see B(2). These fields express value in " +"nanoseconds. If I is specified as 0, then it is made the same " +"as I." +msgstr "" +"3 つのデッドラインスケジューリングパラメーターは I 構造体の " +"I, I, I フィールドに対応する。 " +"これらのフィールドはナノ秒単位の値である。 I に 0 が指定された" +"場合 I と同じ値になる。" + +#. type: Plain text +#: build/C/man7/sched.7:291 +msgid "The kernel requires that:" +msgstr "カーネルでは以下の関係が成り立つことが求められる。" + +#. type: Plain text +#: build/C/man7/sched.7:293 +#, no-wrap +msgid " sched_runtime E= sched_deadline E= sched_period\n" +msgstr " sched_runtime E= sched_deadline E= sched_period\n" + +#. See __checkparam_dl in kernel/sched/core.c +#. type: Plain text +#: build/C/man7/sched.7:303 +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(2) fails with the error B." +msgstr "" +"これに加えて、 現在の実装では、 すべてのパラメーター値は少なくとも 1024 (実装" +"の粒度である 1 マイクロ秒よりも少しだけ大きな値) で 2^63 よりも小さくなければ" +"ならない。 これらのチェックのいずれかが失敗すると、 B(2) はエ" +"ラー B で失敗する。" + +#. type: Plain text +#: build/C/man7/sched.7:306 +msgid "" +"The CBS guarantees non-interference between tasks, by throttling threads " +"that attempt to over-run their specified Runtime." +msgstr "" +"CBS によりタスク間の干渉がないことが保証される。 指定された Runtime を超えて" +"実行しようとしたスレッドは絞り込まれることになる。" + +#. type: Plain text +#: build/C/man7/sched.7:319 +msgid "" +"To ensure deadline scheduling guarantees, the kernel must prevent situations " +"where the set of B threads is not feasible (schedulable) " +"within the given constraints. The kernel thus performs an admittance test " +"when setting or changing B policy and attributes. This " +"admission test calculates whether the change is feasible; if it is not " +"B(2) fails with the error B." +msgstr "" +"デッドラインスケジューリングの保証がきちんと機能するためには、 カーネルは " +"B スレッドの集合が指定された制約条件におさまらない (スケジューリ" +"ングできない) 状況を防止しなければならない。 そのため、カーネルは " +"B ポリシーと属性を設定、変更する際に、受け入れチェック " +"(admittance test) を実行する。 この受け入れチェックは、変更が実行可能かを計算" +"し、もし実行できないようであれば B(2) はエラー B で失敗" +"する。" + +#. type: Plain text +#: build/C/man7/sched.7:325 +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." +msgstr "" +"例えば、 使用率の合計が利用可能な合計 CPU 数以下である必要がある (ただし、必" +"ずしも十分というわけではない)。 なお、 各スレッドは最大で Period あたり " +"Runtime だけ実行されることがあるので、 そのスレッドの使用率は Runtime を " +"Period で割ったものとなる。" + +#. type: Plain text +#: build/C/man7/sched.7:336 +msgid "" +"In order to fulfil the guarantees that are made when a thread is admitted to " +"the B policy, B threads are the highest " +"priority (user controllable) threads in the system; if any B " +"thread is runnable, it will preempt any thread scheduled under one of the " +"other policies." +msgstr "" +"スレッドが B ポリシーに受け入れられた場合に保証を実現するた" +"め、 B スレッドはシステムで (ユーザーが制御可能な) 最高優先度" +"のスレッドとなる。 いずれかの B スレッドが実行可能であれば、 " +"他のポリシーでスケジューリングされているスレッドはすべて横取りされる。" + +#. type: Plain text +#: build/C/man7/sched.7:344 +msgid "" +"A call to B(2) by a thread scheduled under the B " +"policy will fail with the error B, unless the thread has its reset-" +"on-fork flag set (see below)." +msgstr "" +"B ポリシーでスケジューリングされているスレッドが B(2) " +"を呼び出すと、 そのスレッドで reset-on-fork フラグがセットされている場合 (下" +"記参照) を除き、 エラー B で失敗する。" + +# +#. 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:355 +msgid "" +"A B thread that calls B(2) will yield the " +"current job and wait for a new period to begin." +msgstr "" +"B スレッドが B(2) を呼び出すと、 現在のジョブが " +"CPU を明け渡し、新しい期間が開始するのを待つ。" #. type: SS -#: build/C/man2/sched_setscheduler.2:218 +#: 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/man2/sched_setscheduler.2:234 +#: build/C/man7/sched.7:372 msgid "" -"B can only be used at static priority 0. B is the " -"standard Linux time-sharing scheduler that is intended for all processes " -"that do not require the special real-time mechanisms. The process to run is " +"B can be used at only static priority 0. B 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 priority that " "is determined only inside this list. The dynamic priority is based on the " -"nice value (set by B(2) or B(2)) and increased for each " -"time quantum the process is ready to run, but denied to run by the " -"scheduler. This ensures fair progress among all B processes." +"nice value (set by B(2), B(2), or B(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 threads." msgstr "" "B は静的優先度 0 でのみ使用できる。 B は Linux 標準" -"の時分割スケジューラで、 特別なリアルタイム機構を必要としていない全てのプロセ" -"スで使用される。 実行するプロセスは、静的優先度 0 のリストから、このリストの" +"の時分割スケジューラで、 特別なリアルタイム機構を必要としていない全てのスレッ" +"ドで使用される。 実行するスレッドは、静的優先度 0 のリストから、このリストの" "中だけで 決定される「動的な」優先度 (dynamic priority) に基いて決定される。 " -"動的な優先度は (B(2) や B(2) により設定される) nice 値に" -"基づいて決定されるもので、 単位時間毎に、プロセスが実行可能だが、スケジューラ" -"により実行が拒否された 場合にインクリメントされる。 これにより、全ての " -"B プロセスでの公平性が保証される。" +"動的な優先度は (B(2), B(2), B(2) により設定" +"される) nice 値に基づいて決定されるもので、 単位時間毎に、スレッドが実行可能" +"だが、スケジューラにより実行が拒否された 場合にインクリメントされる。 これに" +"より、全ての B スレッドでの公平性が保証される。" #. type: SS -#: build/C/man2/sched_setscheduler.2:234 +#: build/C/man7/sched.7:372 #, no-wrap msgid "SCHED_BATCH: Scheduling batch processes" msgstr "SCHED_BATCH: バッチプロセスのスケジューリング" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:246 +#: build/C/man7/sched.7:384 msgid "" -"(Since Linux 2.6.16.) B can only be used at static priority " -"0. This policy is similar to B in that it schedules the " -"process 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 process is CPU-intensive. Consequently, the scheduler will apply a " -"small scheduling penalty with respect to wakeup behaviour, so that this " -"process is mildly disfavored in scheduling decisions." +"(Since Linux 2.6.16.) B can be used only at static priority " +"0. This policy is similar to B 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 は静的優先度 0 でのみ使用できる。 このポ" -"リシーは (nice 値に基づく) 動的な優先度にしたがってプロセスの スケジューリン" +"リシーは (nice 値に基づく) 動的な優先度にしたがってスレッドの スケジューリン" "グが行われるという点で、B に似ている。 異なるのは、このポリシー" -"では、プロセスが常に CPU に負荷のかかる (CPU-intensive) 処理を行うと、スケ" -"ジューラが仮定する点である。 スケジューラはプロセスを呼び起こす毎にそのプロセ" -"スにスケジューリング上の ペナルティを少し課し、その結果、このプロセスはスケ" +"では、スレッドが常に 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/man2/sched_setscheduler.2:255 +#: 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 " @@ -3522,26 +5660,25 @@ msgid "" msgstr "" "このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理の" "タスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで 確定的な " -"(deterministic) スケジューリング・ポリシーを適用したい処理に 対して有効であ" -"る。" +"(deterministic) スケジューリングポリシーを適用したい処理に 対して有効である。" #. type: SS -#: build/C/man2/sched_setscheduler.2:255 +#: build/C/man7/sched.7:394 #, no-wrap msgid "SCHED_IDLE: Scheduling very low priority jobs" msgstr "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:259 +#: build/C/man7/sched.7:398 msgid "" -"(Since Linux 2.6.23.) B can only be used at static priority 0; " +"(Since Linux 2.6.23.) B can be used only at static priority 0; " "the process nice value has no influence for this policy." msgstr "" "(Linux 2.6.23 以降) B は静的優先度 0 でのみ使用できる。 このポリ" "シーではプロセスの nice 値はスケジューリングに影響を与えない。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:267 +#: 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 or B " @@ -3552,285 +5689,359 @@ msgstr "" "優先度である)。" #. type: SS -#: build/C/man2/sched_setscheduler.2:267 +#: build/C/man7/sched.7:406 #, no-wrap msgid "Resetting scheduling policy for child processes" -msgstr "" +msgstr "子プロセスでのスケジューリングポリシーのリセット" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:283 +#: build/C/man7/sched.7:412 msgid "" -"Since Linux 2.6.32, the B flag can be ORed in I " -"when calling B(). As a result of including this flag, " +"Each thread has a reset-on-fork scheduling flag. When this flag is set, " "children created by B(2) do not inherit privileged scheduling " -"policies. This feature is intended for media-playback applications, and can " -"be used to prevent applications evading the B resource limit " -"(see B(2)) by creating multiple child processes." +"policies. The reset-on-fork flag can be set by either:" msgstr "" +"各スレッドには reset-on-fork スケジューリングフラグがある。 このフラグがセッ" +"トされると、 B(2) で作成される子プロセスは特権スケジューリングポリシー" +"を継承しない。 reset-on-fork フラグは以下のいずれかの方法でセットできる。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:288 +#: build/C/man7/sched.7:421 msgid "" -"More precisely, if the B flag is specified, the " -"following rules apply for subsequently created children:" +"ORing the B flag into the I argument when " +"calling B(2) (since Linux 2.6.32); or" msgstr "" +"B(2) を呼び出す際に B フラグを " +"I 引き数に論理和で指定する (Linux 2.6.32 以降)。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:296 +#: build/C/man7/sched.7:428 msgid "" -"If the calling process has a scheduling policy of B or " -"B, the policy is reset to B in child processes." +"specifying the B flag in I when " +"calling B(2)." msgstr "" +"B(2) を呼び出し際に I に " +"B フラグを指定する。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:299 +#: build/C/man7/sched.7:434 msgid "" -"If the calling process has a negative nice value, the nice value is reset to " -"zero in child processes." +"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(2) and B(2)." +msgstr "" +"これらの 2 つの API で使用される定数は名前が違っている点に注意すること。 同様" +"に reset-on-fork フラグの状態は B(2) と " +"B(2) を使って取得できる。" + +#. 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 resource " +"limit (see B(2)) by creating multiple child processes." +msgstr "" +"reset-on-fork 機能はメディア再生アプリケーションでの利用を意図したものであ" +"る。 複数の子プロセスを作成することで、 アプリケーションは B " +"リソース上限 (B(2) を参照) を避けることができる。" + +#. type: Plain text +#: build/C/man7/sched.7:444 +msgid "" +"More precisely, if the reset-on-fork flag is set, the following rules apply " +"for subsequently created children:" +msgstr "" +"より正確には、 reset-on-fork フラグがセットされた場合、それ以降に作成される子" +"プロセスに以下のルールが適用される。" + +#. type: Plain text +#: build/C/man7/sched.7:452 +msgid "" +"If the calling thread has a scheduling policy of B or " +"B, the policy is reset to B in child processes." msgstr "" +"呼び出したスレッドのスケジューリングポリシーが B か B " +"の場合、子プロセスのポリシーは B にリセットされる。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:308 +#: build/C/man7/sched.7:455 msgid "" -"After the B flag has been enabled, it can only be reset " -"if the process has the B capability. This flag is disabled in " -"child processes created by B(2)." +"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/man2/sched_setscheduler.2:314 +#: build/C/man7/sched.7:463 msgid "" -"The B flag is visible in the policy value returned by " -"B()" +"After the reset-on-fork flag has been enabled, it can be reset only if the " +"thread has the B capability. This flag is disabled in child " +"processes created by B(2)." msgstr "" +"一度 reset-on-fork フラグが有効にされた後は、このフラグをリセットできるのは、" +"スレッドが B ケーパビリティを持つ場合だけである。このフラグは " +"B(2) で作成された子プロセスでは無効になる。" #. type: SS -#: build/C/man2/sched_setscheduler.2:314 +#: build/C/man7/sched.7:463 #, no-wrap msgid "Privileges and resource limits" msgstr "特権とリソース制限" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:327 +#: build/C/man7/sched.7:475 msgid "" -"In Linux kernels before 2.6.12, only privileged (B) processes " +"In Linux kernels before 2.6.12, only privileged (B) threads " "can set a nonzero static priority (i.e., set a real-time scheduling " -"policy). The only change that an unprivileged process can make is to set " -"the B policy, and this can only be done if the effective user " -"ID of the caller of B() matches the real or effective " -"user ID of the target process (i.e., the process specified by I) whose " -"policy is being changed." +"policy). The only change that an unprivileged thread can make is to set the " +"B 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) whose policy is being changed." +msgstr "" +"2.6.12 より前のバージョンの Linux カーネルでは、 特権スレッド " +"(B ケーパビリティを持つスレッド) だけが 0 以外の静的優先度を設" +"定する (すなわち、リアルタイムスケジューリングポリシーを設定する) ことができ" +"る。 非特権スレッドができる変更は B ポリシーを設定することだけで" +"あり、さらに、 この変更を行えるのは、 呼び出し元の実効ユーザー ID がポリシー" +"の変更対象スレッド (I で指定されたスレッド) の実ユーザー ID か実効ユー" +"ザー ID と 一致する場合だけである。" + +#. type: Plain text +#: build/C/man7/sched.7:481 +msgid "" +"A thread must be privileged (B) in order to set or modify a " +"B policy." msgstr "" -"2.6.12 より前のバージョンの Linux カーネルでは、 特権プロセス " -"(B ケーパビリティを持つプロセス) だけが 0 以外の静的優先度を設" -"定する (すなわち、リアルタイム・スケジューリング・ポリシーを設定する) ことが" -"できる。 非特権プロセスができる変更は B ポリシーを設定することだ" -"けであり、さらにこの変更を行えるのは B() の呼び出し元の" -"実効ユーザ ID がポリシーの変更対象プロセス (I で指定されたプロセス) の実" -"ユーザ ID か実効ユーザ ID と 一致する場合だけである。" +"B ポリシーを設定、変更するには、スレッドが特権 " +"(B) を持っていなければならない。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:337 +#: build/C/man7/sched.7:491 msgid "" "Since Linux 2.6.12, the B resource limit defines a ceiling on " -"an unprivileged process's static priority for the B and " +"an unprivileged thread's static priority for the B and " "B policies. The rules for changing scheduling policy and " "priority are as follows:" msgstr "" "Linux 2.6.12 以降では、リソース制限 B が定義されており、 スケ" -"ジューリング・ポリシーが B と B の場合の、非特権プロセ" -"スの静的優先度の上限を定めている。 スケジューリング・ポリシーと優先度を変更す" -"る際のルールは以下の通りである。" +"ジューリングポリシーが B と B の場合の、非特権スレッド" +"の静的優先度の上限を定めている。 スケジューリングポリシーと優先度を変更する際" +"のルールは以下の通りである。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:345 +#: build/C/man7/sched.7:499 msgid "" -"If an unprivileged process has a nonzero B soft limit, then " -"it can change its scheduling policy and priority, subject to the restriction " +"If an unprivileged thread has a nonzero B 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 soft limit." msgstr "" -"非特権プロセスに 0 以外の B ソフト・リミットが設定されている場" -"合、 非特権プロセスはそのプロセスのスケジューリング・ポリシーと優先度を 変更" -"できるが、優先度を現在の自身の優先度と B ソフト・リミットの大" -"きい方よりも高い値に設定できないという制限が課される。" +"非特権スレッドに 0 以外の B ソフトリミットが設定されている場" +"合、 非特権スレッドはそのスレッドのスケジューリングポリシーと優先度を 変更で" +"きるが、優先度を現在の自身の優先度と B ソフトリミットの大きい" +"方よりも高い値に設定できないという制限が課される。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:350 +#: build/C/man7/sched.7:504 msgid "" "If the B 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 ソフト・リミットが 0 の場合、優先度を下げるか、 リアルタイム" -"でないポリシーへ切り替えるかの変更だけが許可される。" +"B ソフトリミットが 0 の場合、優先度を下げるか、 リアルタイムで" +"ないポリシーへ切り替えるかの変更だけが許可される。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:355 +#: build/C/man7/sched.7:509 msgid "" -"Subject to the same rules, another unprivileged process can also make these " -"changes, as long as the effective user ID of the process making the change " -"matches the real or effective user ID of the target process." +"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 と 一致している場合に限られ" -"る。" +"ある非特権スレッドが別のスレッドに対してこれらの変更を行う際にも、 同じルール" +"が適用される。変更を行えるのは、変更を行おうとするスレッド の実効ユーザー ID " +"が変更対象のスレッドの実ユーザー ID か実効ユーザー ID と 一致している場合に限" +"られる。" #. commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8 #. type: Plain text -#: build/C/man2/sched_setscheduler.2:373 +#: build/C/man7/sched.7:528 msgid "" -"Special rules apply for the B. In Linux kernels before 2.6.39, " -"an unprivileged process operating under this policy cannot change its " +"Special rules apply for the B 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 resource limit. In " -"Linux kernels since 2.6.39, an unprivileged process can switch to either the " +"Linux kernels since 2.6.39, an unprivileged thread can switch to either the " "B or the B policy so long as its nice value falls " "within the range permitted by its B resource limit (see " "B(2))." msgstr "" +"B ポリシーの場合には特別なルールが適用される。 2.6.39 より前の " +"Linux カーネルでは、このポリシーで動作する非特権スレッドは、 " +"B リソース上限の値に関わらず、自分のポリシーを変更することがで" +"きない。 2.6.39 以降の Linux カーネルでは、非特権スレッドは、自分の nice 値" +"が B リソース上限 (B(2) 参照) で許可された範囲である" +"限りは、自分のスケジューリングポリシーを B か B ポ" +"リシーに切り替えることができる。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:384 +#: build/C/man7/sched.7:539 msgid "" -"Privileged (B) processes ignore the B limit; " -"as with older kernels, they can make arbitrary changes to scheduling policy " -"and priority. See B(2) for further information on " -"B." +"Privileged (B) threads ignore the B limit; as " +"with older kernels, they can make arbitrary changes to scheduling policy and " +"priority. See B(2) for further information on B." msgstr "" -"特権プロセス (B ケーパビリティを持つプロセス) の場合、 " +"特権スレッド (B ケーパビリティを持つスレッド) の場合、 " "B の制限は無視される; 古いカーネルと同じように、スケジューリン" -"グ・ポリシーと優先度に対し 任意の変更を行うことができる。 B に" -"関するもっと詳しい情報は B(2) を参照のこと。" +"グポリシーと優先度に対し 任意の変更を行うことができる。 B に関" +"するもっと詳しい情報は B(2) を参照のこと。" #. type: SS -#: build/C/man2/sched_setscheduler.2:384 +#: build/C/man7/sched.7:539 #, no-wrap -msgid "Response time" -msgstr "応答時間 (response time)" +msgid "Limiting the CPU usage of real-time and deadline processes" +msgstr "リアルタイムプロセスとデッドラインプロセスの CPU 使用量を制限する" -#. as described in -#. .BR request_irq (9). #. type: Plain text -#: build/C/man2/sched_setscheduler.2:392 +#: build/C/man7/sched.7:552 msgid "" -"A blocked high priority process 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." +"A nonblocking infinite loop in a thread scheduled under the B, " +"B, or B 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 "" -"I/O 待ちで停止したより高い優先度のプロセスは再びスケジューリングされる 前にい" -"くらかの応答時間がかかる。デバイス・ドライバーを書く場合には \"slow interrupt" -"\" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることがで" -"きる。" - -#. type: SS -#: build/C/man2/sched_setscheduler.2:392 -#, no-wrap -msgid "Miscellaneous" -msgstr "その他" +"B, B, B でスケジューリングされる スレッ" +"ドが停止せずに無限ループに陥ると、 他の全てのより低い優先度のスレッドを永久に" +"停止 (block) させてしまう。 Linux 2.6.25 より前では、 リアルタイムプロセスが" +"暴走してしまい、システムが止まってしまうのを防止する唯一の方法は、 (コンソー" +"ルで) シェルをテスト対象のアプリケーションよりも高い静的優先度で実行すること" +"だけであった。 これによって期待通りに停止したり終了したりしないリアルタイム " +"アプリケーションを緊急終了させることが可能になる。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:397 +#: build/C/man7/sched.7:562 msgid "" -"Child processes inherit the scheduling policy and parameters across a B" -"(2). The scheduling policy and parameters are preserved across B(2)." +"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 " +"resource limit to set a ceiling on the CPU time that a real-time process may " +"consume. See B(2) for details." msgstr "" -"子プロセスは B(2) の際に親プロセスのスケジューリング・ポリシーとパラ" -"メータを継承する。 B(2) の前後で、スケジューリング・ポリシーとパラ" -"メータは保持される。" +"Linux 2.6.25 以降では、 暴走したリアルタイムプロセスやデッドラインプロセスを" +"扱う別の方法が提供されている。 一つは B リソース上限を使ってリ" +"アルタイムプロセスが消費できる CPU 時間の上限を設定する方法である。 詳細は " +"B(2) を参照。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:403 +#: build/C/man7/sched.7:570 msgid "" -"Memory locking is usually needed for real-time processes to avoid paging " -"delays; this can be done with B(2) or B(2)." +"Since version 2.6.25, Linux also provides two I 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 "" -"リアルタイム・プロセスは大抵、ページングの待ち時間を避けるために B" -"(2) や B(2) を使ってメモリ・ロックをしなければならない。" +"Linux 2.6.25 以降では、 2 つの I ファイルを使って、リアルタイムでない" +"プロセスが使用できる CPU 時間を一定量予約することができる。 この方法で CPU 時" +"間をいくらか予約しておくことで、 CPU 時間が (例えば) root シェルに割り当てら" +"れ、このシェルから暴走したプロセスを殺すことができる。 これらのファイルでは両" +"方ともマイクロ秒で時間を指定する。" -#. type: Plain text -#: build/C/man2/sched_setscheduler.2:415 -msgid "" -"Since a nonblocking infinite loop in a process scheduled under B " -"or B will block all processes 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 resource limit in B(2)." -msgstr "" -"B や B でスケジューリングされる プロセスが停止せずに無" -"限ループに陥ると、 他の全てのより低い優先度のプロセスを永久に停止 (block) さ" -"せてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優先度をテストす" -"る アプリケーションよりも常に高く保つべきである。 これによって期待通りに停止" -"したり終了したりしないリアルタイム・ アプリケーションを緊急終了させることが可" -"能になる。 B(2) のリソース制限 B の説明も参照のこ" -"と。" +#. type: TP +#: build/C/man7/sched.7:570 +#, no-wrap +msgid "I" +msgstr "I" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:423 +#: build/C/man7/sched.7:578 msgid "" -"POSIX systems on which B() and B() " -"are available define B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." +"This file specifies a scheduling period that is equivalent to 100% CPU " +"bandwidth. The value in this file can range from 1 to B, giving an " +"operating range of 1 microsecond to around 35 minutes. The default value in " +"this file is 1,000,000 (1 second)." msgstr "" -"POSIX システムでは Iunistd.hE> に B<_POSIX_PRIORITY_SCHEDULING> が" -"定義されている場合にのみ B() と B" -"() が使用できる。" +"このファイルは、 CPU 時間 100% にあたるスケジューリング間隔を指定する。 この" +"ファイルの値として 1 から B を指定できる。 この値は実際の時間として" +"は 1 マイクロ秒から約 35 分に相当する。 このファイルのデフォルト値は " +"1,000,000 (1 秒) である。" + +#. type: TP +#: build/C/man7/sched.7:578 +#, no-wrap +msgid "I" +msgstr "I" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:433 +#: build/C/man7/sched.7:591 msgid "" -"On success, B() returns zero. On success, " -"B() returns the policy for the process (a nonnegative " -"integer). On error, -1 is returned, and I is set appropriately." +"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-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 "" -"成功した場合、 B() は 0 を返す。 成功した場合、 " -"B() は現在のそのプロセスのポリシー (非負の整数) を返" -"す。 エラーの場合、-1 が返され、 I が適切に設定される。" +"このファイルの値は、 システム上のリアルタイムスケジューリングやデッドラインス" +"ケジューリングの全プロセスが使用できる「期間」を指定する。 このファイルの値と" +"して -1 から B-1 を指定できる。 -1 を指定すると、実行時間 (runtime) " +"はスケジューリング間隔 (period) と同じになる。 つまり、 CPU 時間はリアルタイ" +"ムでないプロセスには確保されない (カーネル 2.6.25 より前の Linux の動作であ" +"る)。 このファイルのデフォルト値は 950,000 (0.95 秒) である。 これは CPU 時間" +"の 5% がリアルタイムやデッドラインスケジューリングポリシー以外で動作するプロ" +"セスに確保されるという意味する。" + +#. 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/man2/sched_setscheduler.2:439 -#, fuzzy -#| msgid "" -#| "The scheduling I is not one of the recognized policies, or " -#| "I does not make sense for the I." +#: build/C/man7/sched.7:600 msgid "" -"The scheduling I is not one of the recognized policies, I is " -"NULL, or I does not make sense for the I." +"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 が間違っているか、 I がそのポリ" -"シーでは意味をなさない。" +"I/O 待ちで停止したより高い優先度のスレッドは再びスケジューリングされる 前にい" +"くらかの応答時間がかかる。デバイスドライバーを書く場合には \"slow interrupt" +"\" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることがで" +"きる。" -#. type: Plain text -#: build/C/man2/sched_setscheduler.2:442 -msgid "The calling process does not have appropriate privileges." -msgstr "呼び出したプロセスが適切な特権を持っていない。" +#. type: SS +#: build/C/man7/sched.7:600 +#, no-wrap +msgid "Miscellaneous" +msgstr "その他" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:448 +#: build/C/man7/sched.7:605 msgid "" -"POSIX.1-2001 (but see BUGS below). The B and B " -"policies are Linux-specific." +"Child processes inherit the scheduling policy and parameters across a " +"B(2). The scheduling policy and parameters are preserved across " +"B(2)." msgstr "" -"POSIX.1-2001 (但し、下記のバグの節も参照)。 B と B " -"ポリシーは Linux 固有である。" +"子プロセスは B(2) の際に親プロセスのスケジューリングポリシーとパラメー" +"ターを継承する。 B(2) の前後で、スケジューリングポリシーとパラメー" +"ターは保持される。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:456 +#: build/C/man7/sched.7:611 msgid "" -"POSIX.1 does not detail the permissions that an unprivileged process " -"requires in order to call B(), and details vary across " -"systems. For example, the Solaris 7 manual page says that the real or " -"effective user ID of the calling process must match the real user ID or the " -"save set-user-ID of the target process." +"Memory locking is usually needed for real-time processes to avoid paging " +"delays; this can be done with B(2) or B(2)." msgstr "" -"POSIX.1 は、非特権プロセスが B() を呼び出すために必要な" -"権限の詳細を規定しておらず、 詳細はシステムにより異なる。 例えば、Solaris 7 " -"のマニュアルページでは、 呼び出し元プロセスの実ユーザ ID または実効ユーザ ID " -"が 設定対象のプロセスの実ユーザ ID か保存 (save) set-user-ID と 一致していな" -"ければならない、となっている。" +"リアルタイムプロセスは大抵、ページングの待ち時間を避けるために B(2) " +"や B(2) を使ってメモリーロックをしなければならない。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:466 +#: 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, " @@ -3842,17 +6053,17 @@ msgid "" "2.6.17." msgstr "" "もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計され" -"ており、バックグラウンド・プロセスや対話的アプリケーション、 リアルタイム性の" -"要求が厳しくないリアルタイム・アプリケーション (普通はタイミングの応答期限 " +"ており、バックグラウンドプロセスや対話的アプリケーション、 リアルタイム性の要" +"求が厳しくないリアルタイムアプリケーション (普通はタイミングの応答期限 " "(deadline) を満たす必要があるアプリケーション) を扱うことができた。 Linux " "カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であ" "り、 新たに導入された O(1) スケジューラにより、 アクティブなタスクの数に関わ" "らずスケジューリングに必要な時間は 固定で確定的 (deterministic) であることが" -"保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイム・" -"コンピューティングは実現できなかった。" +"保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイムコ" +"ンピューティングは実現できなかった。" #. type: SS -#: build/C/man2/sched_setscheduler.2:466 +#: build/C/man7/sched.7:622 #, no-wrap msgid "Real-time features in the mainline Linux kernel" msgstr "本流の Linux カーネルでのリアルタイム機能" @@ -3860,16 +6071,7 @@ 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/man2/sched_setscheduler.2:480 -#, fuzzy -#| msgid "" -#| "From kernel version 2.6.18 onwards, however, Linux is gradually becoming " -#| "equipped with real-time capabilities, most of which are derived from the " -#| "former I 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/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 " @@ -3879,30 +6081,31 @@ msgid "" "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 は徐々にリアルタイム機能を備えつつある" -"が、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner, Steven Rostedt " -"らによって開発された、 以前の I パッチからのものである。 こ" -"れらのパッチが本流のカーネルに完全にマージされるまでは (マージの完了はカーネ" -"ル 2.6.30 あたりの予定)、 最高のリアルタイム性能を達成するには realtime-" -"preempt パッチを 組み込まなければならない。 これらのパッチは" +"カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ\n" +"あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,\n" +"Steven Rostedt らによって開発された、 以前の I パッチ\n" +"からのものである。 これらのパッチが本流のカーネルに完全にマージされるま\n" +"では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム\n" +"性能を達成するには realtime-preempt パッチを 組み込まなければならない。\n" +"これらのパッチは" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:484 +#: build/C/man7/sched.7:640 #, no-wrap msgid "patch-I-rtI\n" msgstr "patch-I-rtI\n" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:489 +#: build/C/man7/sched.7:646 msgid "" -"and can be downloaded from I." +"and can be downloaded from E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/" +"kernel\\:/projects\\:/rt/> E<.UE .>" msgstr "" -"という名前で、 I からダ" -"ウンロードできる。" +"という名前で、 E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/" +"projects\\:/rt/> E<.UE> からダウンロードできる。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:498 +#: 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 " @@ -3913,257 +6116,205 @@ msgstr "" "このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了する" "までは、カーネルの設定では B, " "B, B の 3つのプリエンプショ" -"ン・クラス (preemption class) だけが提供される。 これらのクラスでは、最悪の場" -"合のスケジューリング遅延がそれぞれ 全く減らない、いくらか減る、かなり減る。" +"ンクラス (preemption class) だけが提供される。 これらのクラスでは、最悪の場合" +"のスケジューリング遅延がそれぞれ 全く減らない、いくらか減る、かなり減る。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:509 +#: 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 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() are then used to run a process with " -"true real-time priority and a minimum worst-case scheduling latency." +"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 が利用可能になる。" -"この項目を選択すると、 Linux は通常のリアルタイム・オペレーティングシステムに" -"変身する。 この場合には、 B() で選択できる FIFO と RR の" -"スケジューリング・ポリシーは、 真のリアルタイム優先度を持つプロセスを最悪の場" -"合のスケジューリング遅延が 最小となる環境で動作させるために使われることにな" -"る。" - -#. type: Plain text -#: build/C/man2/sched_setscheduler.2:517 -msgid "" -"POSIX says that on success, B() should return the " -"previous scheduling policy. Linux B() does not conform " -"to this requirement, since it always returns 0 on success." -msgstr "" -"POSIX では、成功時に B() は直前のスケジューリング・ポリ" -"シーを返すべきとされている。 Linux の B() はこの要求仕様" -"に準拠しておらず、 成功時には常に 0 を返す。" +"この項目を選択すると、 Linux は通常のリアルタイムオペレーティングシステムに変" +"身する。 この場合には、 FIFO と RR のスケジューリングポリシーは、 真のリアル" +"タイム優先度を持つスレッドを最悪の場合のスケジューリング遅延が 最小となる環境" +"で動作させるために使われることになる。" #. type: Plain text -#: build/C/man2/sched_setscheduler.2:535 +#: build/C/man7/sched.7:691 msgid "" -"B(2), B(2), B(2), B(2), B" -"(2), B(2), B(2), B(2), " +"B(1), B(1), B(2), B(2), B(2), " +"B(2), B(2), B(2), B(2), " +"B(2), B(2), " "B(2), B(2), B(2), " -"B(2), B(2), B(2), " -"B(2), B(7), B(7)" -msgstr "" -"B(2), B(2), B(2), B(2), B" -"(2), B(2), B(2), B(2), " +"B(2), B(2), B(2), " +"B(2), B(2), B(3), " +"B(3), B(3), B(7), " +"B(7)" +msgstr "" +"B(1), B(1), B(2), B(2), B(2), " +"B(2), B(2), B(2), B(2), " +"B(2), B(2), " "B(2), B(2), B(2), " -"B(2), B(2), B(2), " -"B(2), B(7), B(7)" - -#. type: Plain text -#: build/C/man2/sched_setscheduler.2:541 -msgid "" -"The kernel source file I (since " -"kernel 2.6.25)." -msgstr "" -"カーネル・ソース内のファイル I " -"(カーネル 2.6.25 以降)" - -#. type: TH -#: build/C/man2/sched_yield.2:30 -#, no-wrap -msgid "SCHED_YIELD" -msgstr "SCHED_YIELD" - -#. type: TH -#: build/C/man2/sched_yield.2:30 -#, no-wrap -msgid "2008-10-18" -msgstr "2008-10-18" - -#. type: Plain text -#: build/C/man2/sched_yield.2:33 -msgid "sched_yield - yield the processor" -msgstr "sched_yield - プロセッサーを空け渡す(yield)" - -#. type: Plain text -#: build/C/man2/sched_yield.2:37 -msgid "B" -msgstr "B" - -#. type: Plain text -#: build/C/man2/sched_yield.2:42 -msgid "" -"B() causes the calling thread to relinquish the CPU. The " -"thread is moved to the end of the queue for its static priority and a new " -"thread gets to run." -msgstr "" -"B() を呼び出すことで、呼び出したスレッドが CPU の使用権を手放す" -"ことができる。 そのスレッドは、そのスレッドの静的プライオリティのキューの末尾" -"に 移動し、新しいスレッドが走り始める。" - -#. type: Plain text -#: build/C/man2/sched_yield.2:49 -msgid "" -"On success, B() returns 0. On error, -1 is returned, and " -"I is set appropriately." -msgstr "" -"成功した場合は B() は 0 を返す。 エラーの場合は -1 が返され、 " -"I が適切に設定される。" - -#. type: Plain text -#: build/C/man2/sched_yield.2:53 -msgid "In the Linux implementation, B() always succeeds." -msgstr "Linux の実装では、 B() は常に成功する。" - -#. type: Plain text -#: build/C/man2/sched_yield.2:60 -msgid "" -"If the calling thread is the only thread in the highest priority list at " -"that time, it will continue to run after a call to B()." -msgstr "" -"B() を呼び出した時点で最大優先度のリストの中に呼び出し元のス" -"レッドしか 存在しなければ、そのスレッドは呼び出し後も走り続けることになる。" +"B(2), B(2), B(2), " +"B(2), B(2), B(3), " +"B(3), B(3), B(7), " +"B(7)" #. type: Plain text -#: build/C/man2/sched_yield.2:66 +#: build/C/man7/sched.7:695 msgid "" -"POSIX systems on which B() is available define " -"B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." +"I by Bill O. Gallmeister, O'Reilly " +"& Associates, Inc., ISBN 1-56592-074-0." msgstr "" -"POSIX システムで B() は Iunistd.hE> に " -"B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。" +"I by Bill O. Gallmeister, O'Reilly " +"& Associates, Inc., ISBN 1-56592-074-0." #. type: Plain text -#: build/C/man2/sched_yield.2:79 +#: build/C/man7/sched.7:702 msgid "" -"Strategic calls to B() can improve performance by giving other " -"threads or processes a chance to run when (heavily) contended resources (e." -"g., mutexes) have been released by the caller. Avoid calling B" -"() unnecessarily or inappropriately (e.g., when resources needed by other " -"schedulable threads are still held by the caller), since doing so will " -"result in unnecessary context switches, which will degrade system " -"performance." -msgstr "" -"B() を戦略的に呼び出すことで、(極度に) 競合するリソース (mutex " -"など) を呼び出し元が解放した際に他のスレッドやプロセスに実行機会を与えること" -"で、 性能を上げることができる。 B() を必要もないのに呼び出した" -"り、不適切な場面 (例えば、他のスケジューリング 対象となるスレッドが必要とする" -"リソースを呼び出し元が保持したままの状態) で呼び出したりするのは避けること。" -"なぜなら、 B() の呼び出しより不必要なコンテキストスイッチが起こ" -"り、システム性能が 劣化する結果になるからである。" - -#. type: Plain text -#: build/C/man2/sched_yield.2:82 -msgid "B(2) for a description of Linux scheduling." +"The Linux kernel source files I, " +"I, I, and I" msgstr "" -"Linux のスケージュリング(scheduling)については B(2) を参" -"照せよ。" +"Linux カーネルソースのファイル I, I, I, I" #. type: TH -#: build/C/man2/setns.2:4 +#: build/C/man2/setns.2:8 #, no-wrap msgid "SETNS" msgstr "SETNS" #. type: TH -#: build/C/man2/setns.2:4 +#: build/C/man2/setns.2:8 #, no-wrap -msgid "2011-10-04" -msgstr "2011-10-04" +msgid "2015-01-10" +msgstr "2015-01-10" #. type: Plain text -#: build/C/man2/setns.2:7 +#: build/C/man2/setns.2:11 msgid "setns - reassociate thread with a namespace" -msgstr "setns - reassociate thread with a namespace" +msgstr "setns - スレッドに名前空間を関連付けしなおす" #. type: Plain text -#: build/C/man2/setns.2:13 +#: build/C/man2/setns.2:17 #, no-wrap msgid "BIB<, int >IB<);>\n" msgstr "BIB<, int >IB<);>\n" #. type: Plain text -#: build/C/man2/setns.2:17 +#: build/C/man2/setns.2:21 msgid "" "Given a file descriptor referring to a namespace, reassociate the calling " "thread with that namespace." msgstr "" -"Given a file descriptor referring to a namespace, reassociate the calling " -"thread with that namespace." +"名前空間を参照するファイルディスクリプターを指定すると、\n" +"呼び出したスレッドにその名前空間を関連付けしなおす。" #. type: Plain text -#: build/C/man2/setns.2:30 +#: build/C/man2/setns.2:34 msgid "" "The I argument is a file descriptor referring to one of the namespace " -"entries in a I directory; see B(5) for further " +"entries in a I directory; see B(7) for further " "information on I. The calling thread will be reassociated " "with the corresponding namespace, subject to any constraints imposed by the " "I argument." msgstr "" -"The I argument is a file descriptor referring to one of the namespace " -"entries in a I directory; see B(5) for further " -"information on I. The calling thread will be reassociated " -"with the corresponding namespace, subject to any constraints imposed by the " -"I argument." +"I 引き数は、 I ディレクトリ内の名前空間エントリー\n" +"のいずれかを参照するファイルディスクリプターである。\n" +"I の詳細は B(7) を参照。\n" +"I 引き数で指定された制限の範囲内で、\n" +"呼び出したスレッドに I に対応する名前空間を関連付けしなおす。" #. type: Plain text -#: build/C/man2/setns.2:36 +#: build/C/man2/setns.2:40 msgid "" "The I argument specifies which type of namespace the calling thread " "may be reassociated with. This argument can have one of the following " "values:" msgstr "" -"The I argument specifies which type of namespace the calling thread " -"may be reassociated with. This argument can have one of the following " -"values:" +"I 引き数は、呼び出したスレッドがどのタイプの名前空間を\n" +"関連付けしなおすことができるかを指定する。\n" +"この引き数には以下のいずれかの値を指定できる。" #. type: TP -#: build/C/man2/setns.2:36 +#: build/C/man2/setns.2:40 #, no-wrap msgid "B<0>" msgstr "B<0>" #. type: Plain text -#: build/C/man2/setns.2:39 -msgid "Allow any type of namespace to be joined." -msgstr "Allow any type of namespace to be joined." +#: build/C/man2/setns.2:43 +msgid "Allow any type of namespace to be joined." +msgstr "どのタイプの名前空間も関連付けることができる。" + +#. type: TP +#: build/C/man2/setns.2:43 +#, no-wrap +msgid "B (since Linux 3.0)" +msgstr "B (Linux 3.0 以降)" + +#. type: Plain text +#: build/C/man2/setns.2:47 +msgid "I must refer to an IPC namespace." +msgstr "I は IPC 名前空間を参照していなければならない。" + +#. type: TP +#: build/C/man2/setns.2:47 +#, no-wrap +msgid "B (since Linux 3.0)" +msgstr "B (Linux 3.0 以降)" + +#. type: Plain text +#: build/C/man2/setns.2:51 +msgid "I must refer to a network namespace." +msgstr "I はネットワーク名前空間を参照していなければならない。" + +#. type: TP +#: build/C/man2/setns.2:51 +#, no-wrap +msgid "B (since Linux 3.8)" +msgstr "B (Linux 3.8 以降)" + +#. type: Plain text +#: build/C/man2/setns.2:55 +msgid "I must refer to a mount namespace." +msgstr "I はマウント名前空間を参照していなければならない。" #. type: TP -#: build/C/man2/setns.2:39 +#: build/C/man2/setns.2:55 build/C/man2/unshare.2:149 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 3.8)" +msgstr "B (Linux 3.8 以降)" #. type: Plain text -#: build/C/man2/setns.2:43 -msgid "I must refer to an IPC namespace." -msgstr "I must refer to an IPC namespace." +#: build/C/man2/setns.2:59 +msgid "I must refer to a descendant PID namespace." +msgstr "I は子孫の PID 名前空間を参照していなければならない。" #. type: TP -#: build/C/man2/setns.2:43 +#: build/C/man2/setns.2:59 build/C/man2/unshare.2:176 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 3.8)" +msgstr "B (Linux 3.8 以降)" #. type: Plain text -#: build/C/man2/setns.2:47 -msgid "I must refer to a network namespace." -msgstr "I must refer to a network namespace." +#: build/C/man2/setns.2:63 +msgid "I must refer to a user namespace." +msgstr "I はユーザー名前空間を参照していなければならない。" #. type: TP -#: build/C/man2/setns.2:47 +#: build/C/man2/setns.2:63 #, no-wrap -msgid "B" -msgstr "B" +msgid "B (since Linux 3.0)" +msgstr "B (Linux 3.0 以降)" #. type: Plain text -#: build/C/man2/setns.2:51 +#: build/C/man2/setns.2:67 msgid "I must refer to a UTS namespace." -msgstr "I must refer to a UTS namespace." +msgstr "I は UTS 名前空間を参照していなければならない。" #. type: Plain text -#: build/C/man2/setns.2:66 +#: build/C/man2/setns.2:82 msgid "" "Specifying I as 0 suffices if the caller knows (or does not care) " "what type of namespace is referred to by I. Specifying a nonzero value " @@ -4173,107 +6324,374 @@ msgid "" "referred to by I if the file descriptor was opened by another process " "and, for example, passed to the caller via a UNIX domain socket.)" msgstr "" -"Specifying I as 0 suffices if the caller knows (or does not care) " -"what type of namespace is referred to by I. Specifying a nonzero value " -"for I is useful if the caller does not know what type of namespace " -"is referred to by I 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 if the file descriptor was opened by another process " -"and, for example, passed to the caller via a UNIX domain socket.)" +"呼び出し側が I がどのタイプの名前空間を参照しているかを知っている\n" +"(もしくは気にする必要がない) 場合には、 I に 0 を指定すれば十分\n" +"である。呼び出し側が I がどのタイプの名前空間を参照しているかを\n" +"知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、\n" +"I に 0 以外の値を指定するとよい。 (ファイルディスクリプターが別の\n" +"プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し\n" +"側に渡された場合などでは、呼び出し側が I がどのタイプの名前空間を\n" +"参照しているかを知らない可能性がある。)" #. type: Plain text -#: build/C/man2/setns.2:73 -msgid "" -"On success, I() returns 0. On failure, -1 is returned and I " +#: build/C/man2/setns.2:97 +#, fuzzy +#| msgid "" +#| "B behaves somewhat differently from the other I " +#| "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 is a descendant (child, grandchild, etc.) of the PID " +#| "namespace of the caller. For further details on PID namespaces, see " +#| "B(7)." +msgid "" +"B behaves somewhat differently from the other I " +"values: reassociating the calling thread with a PID namespace changes only " +"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 allowed only if the PID namespace specified by I is a " +"descendant (child, grandchild, etc.) of the PID namespace of the caller. " +"For further details on PID namespaces, see B(7)." +msgstr "" +"B は他の I 値の場合と少し違った動作をする。 呼び出し元" +"スレッドを PID 名前空間に関連付けし直すと、 呼び出し元の子プロセスが作成され" +"る PID 名前空間が変更されるだけである。 呼び出し元自身の PID 名前空間は変更さ" +"れない。 PID 名前空間を関連付けし直すことができるのは、 I で指定された " +"PID 名前空間が呼び出し元の PID 名前空間の子孫 (子プロセス、孫プロセスなど) の" +"場合だけである。 PID 名前空間の詳細は B(7) を参照。" + +#. See kernel/user_namespace.c:userns_install() [3.8 source] +#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 +#. https://lwn.net/Articles/543273/ +#. type: Plain text +#: build/C/man2/setns.2:124 +msgid "" +"A process reassociating itself with a user namespace must have the " +"B 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(). It is not permitted to use " +"B() 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(). 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(2) B flag) with " +"another process. For further details on user namespaces, see " +"B(7)." +msgstr "" +"プロセスが自分自身をユーザー名前空間に再関連付けするには、 そのプロセスは変更" +"後のユーザー名前空間において B ケーパビリティを持っていなけれ" +"ばならない。 ユーザー名前空間への参加に成功すると、 そのユーザー ID やグルー" +"プ ID に関わらず、 プロセスにはその名前空間におけるすべてのケーパビリティが認" +"められる。 マルチスレッドのプロセスは B() でユーザー名前空間を変更でき" +"ない。 B() を使って、呼び出し元が現在のユーザー名前空間に再度入ること" +"は認められていない。 これにより、 いくつかのケーパビリティを外した呼び出し元" +"が B() を呼び出すことでそれらのケーパビリティを再度得ることを防ぐこと" +"ができる。 セキュリティ上の理由から、 ファイルシステム関連の属性 (共有が " +"B(2) B フラグで制御される属性) を別のプロセスと共有している" +"場合、 プロセスは新しいユーザー名前空間に参加できない。 ユーザー名前空間の詳" +"細は B(7) を参照。" + +#. Above check is in fs/namespace.c:mntns_install() [3.8 source] +#. type: Plain text +#: build/C/man2/setns.2:138 +msgid "" +"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 and B capabilities in its own " +"user namespace and B in the target mount namespace. See " +"B(7) for details on the interaction of user namespaces and " +"mount namespaces." +msgstr "" +"プロセスがマルチスレッドの場合、そのプロセスを新しいマウント名前空間に関連付" +"けし直すことは許可されていない。 マウント名前空間を変更するには、呼び出し元の" +"プロセスが、 自分自身のユーザー名前空間において B と " +"B の両方のケーパビリティを持っており、 変更後のマウント名前空" +"間で B ケーパビリティを持っていなければならない。 ユーザー名前" +"空間とマウント名前空間の関係の詳細は B(7) を参照。" + +#. type: Plain text +#: build/C/man2/setns.2:145 +msgid "" +"On success, B() returns 0. On failure, -1 is returned and I " "is set to indicate the error." msgstr "" -"On success, I() returns 0. On failure, -1 is returned and I " -"is set to indicate the error." - -#. type: TP -#: build/C/man2/setns.2:74 -#, no-wrap -msgid "B" -msgstr "B" +"成功すると B() は 0 を返す。 失敗すると、 -1 が返され、 I にエ" +"ラーを示す値が設定される。" #. type: Plain text -#: build/C/man2/setns.2:78 +#: build/C/man2/setns.2:150 msgid "I is not a valid file descriptor." -msgstr "I is not a valid file descriptor." +msgstr "I が有効なファイルディスクリプターではない。" #. type: Plain text -#: build/C/man2/setns.2:85 +#: build/C/man2/setns.2:155 msgid "" "I refers to a namespace whose type does not match that specified in " -"I, or there is problem with reassociating the the thread with the " -"specified namespace." +"I." msgstr "" -"I refers to a namespace whose type does not match that specified in " -"I, or there is problem with reassociating the the thread with the " -"specified namespace." +"I が I で指定されたタイプと一致しない名前空間を参照している。" + +#. type: Plain text +#: build/C/man2/setns.2:159 +msgid "" +"There is problem with reassociating the thread with the specified namespace." +msgstr "スレッドを指定された名前空間に関連付けし直す際に問題が発生した。" + +#. type: Plain text +#: build/C/man2/setns.2:164 +msgid "" +"The caller tried to join an ancestor (parent, grandparent, etc...) pid " +"namespace." +msgstr "呼び出し元が先祖 (親や親の親など) の PID 名前空間に参加しようとした。" + +#. type: Plain text +#: build/C/man2/setns.2:168 +msgid "" +"The caller attempted to join the user namespace in which it is already a " +"member." +msgstr "自分がすでにメンバーとなっているユーザー名前空間に参加しようとした。" + +#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 +#. type: Plain text +#: build/C/man2/setns.2:175 +msgid "" +"The caller shares filesystem (B) state (in particular, the root " +"directory) with other processes and tried to join a new user namespace." +msgstr "" +"呼び出し元が他のプロセスとファイルシステム状態 (特に root ディレクトリ) を共" +"有していて (B)、 新しいユーザー名前空間に参加しようとした。" + +#. See kernel/user_namespace.c::userns_install() [kernel 3.15 sources] +#. type: Plain text +#: build/C/man2/setns.2:179 +msgid "The caller is multithreaded and tried to join a new user namespace." +msgstr "" +"呼び出し元プロセスがマルチスレッドで、新しいユーザー名前空間に参加しようとし" +"た。" #. type: Plain text -#: build/C/man2/setns.2:88 +#: build/C/man2/setns.2:182 msgid "Cannot allocate sufficient memory to change the specified namespace." -msgstr "Cannot allocate sufficient memory to change the specified namespace." +msgstr "指定された名前空間に変更するのに必要なメモリーが割り当てられない。" #. type: Plain text -#: build/C/man2/setns.2:93 +#: build/C/man2/setns.2:186 msgid "" -"The calling thread did not have the required privilege (B) " -"for this operation." +"The calling thread did not have the required capability for this operation." msgstr "" -"The calling thread did not have the required privilege (B) " -"for this operation." +"呼び出し元スレッドはこの操作を行うのに必要なケーパビリティを持っていなかっ" +"た。" #. type: Plain text -#: build/C/man2/setns.2:97 -msgid "The B() system call first appeared in Linux in kernel 3.0" -msgstr "The B() system call first appeared in Linux in kernel 3.0" +#: build/C/man2/setns.2:191 +msgid "" +"The B() system call first appeared in Linux in kernel 3.0; library " +"support was added to glibc in version 2.14." +msgstr "" +"B() システムコールはカーネル 3.0 で Linux に初めて登場した。\n" +"ライブラリによるサポートは glibc バージョン 2.14 を追加された。" #. type: Plain text -#: build/C/man2/setns.2:101 +#: build/C/man2/setns.2:195 msgid "The B() system call is Linux-specific." -msgstr "The B() system call is Linux-specific." +msgstr "B() システムコールは Linux 固有である。" #. type: Plain text -#: build/C/man2/setns.2:107 +#: build/C/man2/setns.2:201 msgid "" "Not all of the attributes that can be shared when a new thread is created " "using B(2) can be changed using B()." msgstr "" -"Not all of the attributes that can be shared when a new thread is created " -"using B(2) can be changed using B()." +"新しいスレッドが B(2) を使って作成された際に共有できる全ての属性を、\n" +"B() を使って変更できるわけではない。" + +#. type: Plain text +#: build/C/man2/setns.2:210 +msgid "" +"The program below takes two or more arguments. The first argument specifies " +"the pathname of a namespace file in an existing I " +"directory. The remaining arguments specify a command and its arguments. " +"The program opens the namespace file, joins that namespace using B(), " +"and executes the specified command inside that namespace." +msgstr "" +"以下のプログラムは 2 つ以上の引き数を取る。 最初の引き数には、 既存の I ディレクトリの名前空間ファイルのパス名を指定する。 残りの引き" +"数は、コマンドとその引き数を指定する。 このプログラムは名前空間ファイルをオー" +"プンし、 B() を使って名前空間に参加し、 指定されたコマンドをその名前空" +"間内で実行する。" + +#. type: Plain text +#: build/C/man2/setns.2:220 +msgid "" +"The following shell session demonstrates the use of this program (compiled " +"as a binary named I) in conjunction with the B " +"example program in the B(2) man page (complied as a binary named " +"I)." +msgstr "" +"以下のシェルセッションでは、 このプログラム (I という名前のバイナリ" +"としてコンパイルされている)を、 B(2) のマニュアルページの " +"B のサンプルプログラムと組み合わせて使っている。" + +#. type: Plain text +#: build/C/man2/setns.2:228 +msgid "" +"We begin by executing the example program in B(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(2) のサンプルプログラムをバックグラウンドで実行する。 このプ" +"ログラムは、 別の UTS 名前空間で子プロセスを作成する。 子プロセスは自分の名前" +"空間内でホスト名を変更する。 それから、 親プロセスと子プロセスの両方でそれぞ" +"れの UTS 名前空間のホスト名を表示し、 2 つのホスト名が違うことが確認できる。" + +#. type: Plain text +#: build/C/man2/setns.2:240 +#, no-wrap +msgid "" +"$ B # 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 # Verify hostname in the shell\n" +"antero\n" +msgstr "" +"$ B # 名前空間の操作には特権が必要\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 # シェルでホスト名を確認\n" +"antero\n" + +#. type: Plain text +#: build/C/man2/setns.2:247 +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/man2/setns.2:253 +#, no-wrap +msgid "" +"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n" +"# B # Executed in shell started by ns_exec\n" +"bizarro\n" +msgstr "" +"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n" +"# B # ns_exec で起動されたシェル内で実行\n" +"bizarro\n" + +#. type: Plain text +#: build/C/man2/setns.2:263 +#, no-wrap +msgid "" +"#define _GNU_SOURCE\n" +"#include Efcntl.hE\n" +"#include Esched.hE\n" +"#include Eunistd.hE\n" +"#include Estdlib.hE\n" +"#include Estdio.hE\n" +msgstr "" +"#define _GNU_SOURCE\n" +"#include Efcntl.hE\n" +"#include Esched.hE\n" +"#include Eunistd.hE\n" +"#include Estdlib.hE\n" +"#include Estdio.hE\n" + +#. type: Plain text +#: build/C/man2/setns.2:271 +#, no-wrap +msgid "" +"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/man2/setns.2:276 +#, no-wrap +msgid "" +" if (argc E 3) {\n" +" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" if (argc E 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/man2/setns.2:115 +#: build/C/man2/setns.2:280 +#, no-wrap +msgid "" +" 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/man2/setns.2:283 +#, no-wrap +msgid "" +" 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/man2/setns.2:287 +#, no-wrap msgid "" -"The PID namespace and the mount namespace are not currently supported. (See " -"the descriptions of B and B in B(2).)" +" execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n" +" errExit(\"execvp\");\n" +"}\n" msgstr "" -"The PID namespace and the mount namespace are not currently supported. (See " -"the descriptions of B and B in B(2).)" +" execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */\n" +" errExit(\"execvp\");\n" +"}\n" #. type: Plain text -#: build/C/man2/setns.2:120 -msgid "B(2), B(2), B(2), B(5), B(7)" -msgstr "B(2), B(2), B(2), B(5), B(7)" +#: build/C/man2/setns.2:295 +msgid "" +"B(2), B(2), B(2), B(2), B(7), " +"B(7)" +msgstr "" +"B(2), B(2), B(2), B(2), B(7), " +"B(7)" #. type: TH -#: build/C/man2/unshare.2:17 +#: build/C/man2/unshare.2:20 #, no-wrap msgid "UNSHARE" msgstr "UNSHARE" -#. type: TH -#: build/C/man2/unshare.2:17 -#, fuzzy, no-wrap -#| msgid "2010-10-31" -msgid "2010-10-30" -msgstr "2010-10-31" - #. type: Plain text -#: build/C/man2/unshare.2:20 +#: build/C/man2/unshare.2:23 msgid "unshare - disassociate parts of the process execution context" msgstr "unshare - プロセス実行コンテキストの一部を分離する" @@ -4284,7 +6702,12 @@ msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text -#: build/C/man2/unshare.2:41 +#: build/C/man2/unshare.2:36 +msgid "B():" +msgstr "B():" + +#. type: Plain text +#: build/C/man2/unshare.2:62 msgid "" "B() allows a process to disassociate parts of its execution " "context that are currently being shared with other processes. Part of the " @@ -4297,11 +6720,11 @@ msgstr "" "ストの一部を分離することができる。 実行コンテキストの一部、たとえばマウント名" "前空間 (mount namespace) などは、新しいプロセスを B(2) または " "B(2) を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモ" -"リなどは、 B(2) を使ってプロセスを生成するときに、明示的に共有するこ" -"とを要求できる。" +"リーなどは、 B(2) を使ってプロセスを生成するときに、明示的に共有する" +"ことを要求できる。" #. type: Plain text -#: build/C/man2/unshare.2:46 +#: build/C/man2/unshare.2:67 msgid "" "The main use of B() is to allow a process to control its shared " "execution context without creating a new process." @@ -4310,7 +6733,7 @@ msgstr "" "有実行コンテキストを制御することである。" #. type: Plain text -#: build/C/man2/unshare.2:53 +#: build/C/man2/unshare.2:74 msgid "" "The I argument is a bit mask that specifies which parts of the " "execution context should be unshared. This argument is specified by ORing " @@ -4319,71 +6742,71 @@ msgstr "" "I 引き数はビットマスクであり、 実行コンテキストのどの部分の共有を解除" "するかを表す。 この引き数は、以下の定数の 0 個以上の OR で指定する:" +#. type: TP +#: build/C/man2/unshare.2:74 +#, no-wrap +msgid "B" +msgstr "B" + #. type: Plain text -#: build/C/man2/unshare.2:61 +#: build/C/man2/unshare.2:82 msgid "" "Reverse the effect of the B(2) B flag. Unshare the " "file descriptor table, so that the calling process no longer shares its file " "descriptors with any other process." msgstr "" -"B(2) B フラグの効果を取り消す。 ファイルディスクリプタ" +"B(2) B フラグの効果を取り消す。 ファイルディスクリプター" "テーブルを共有させず、 呼び出し元プロセスは他のプロセスとファイルディスクリプ" -"タを共有しなくなる。" +"ターを共有しなくなる。" + +#. type: TP +#: build/C/man2/unshare.2:82 +#, no-wrap +msgid "B" +msgstr "B" #. type: Plain text -#: build/C/man2/unshare.2:74 +#: build/C/man2/unshare.2:96 msgid "" -"Reverse the effect of the B(2) B flag. Unshare file " -"system attributes, so that the calling process no longer shares its root " -"directory, current directory, or umask attributes with any other process. " -"B(2), B(2), or B(2)" +"Reverse the effect of the B(2) B flag. Unshare filesystem " +"attributes, so that the calling process no longer shares its root directory " +"(B(2)), current directory (B(2)), or umask (B(2)) " +"attributes with any other process." msgstr "" -"B(2) B フラグの効果を取り消す。 ファイルシステム属性を共有" -"させず、 呼び出し元プロセスは他のプロセスとルートディレクトリ・ カレントディ" -"レクトリ・umask 属性を共有しなくなる。 B(2), B(2), B" -"(2) に影響する。" +"B(2) B フラグの効果を取り消す。ファイルシステム属性を共有さ" +"せず、呼び出し元プロセスは、ルートディレクトリ (B(2))、カレントディレ" +"クトリ (B(2))、 umask (B(2)) を他のプロセスと共有しなくなる。" #. type: Plain text -#: build/C/man2/unshare.2:91 -#, fuzzy -#| msgid "" -#| "This flag has the I effect as the B(2) B " -#| "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 as well." +#: build/C/man2/unshare.2:113 msgid "" "This flag has the same effect as the B(2) B 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 " +"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 " "as well. Use of B requires the B capability." msgstr "" -"このフラグは B(2) B フラグとI<同じ>効果を持つ。 マウント" -"名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固有の名前" -"空間のコピーを持つ。 このフラグを指定すると、 B も暗黙のうちに指定" -"される。" +"このフラグは B(2) B フラグと同じ効果を持つ。\n" +"System\\ V IPC 名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは\n" +"共有しない固有の System\\ V IPC 名前空間のコピーを持つ。 このフラグを指定\n" +"すると、 B も暗黙のうちに指定される。 B を\n" +"使用するには B ケーパビリティが必要である。" #. type: Plain text -#: build/C/man2/unshare.2:105 -#, fuzzy -#| msgid "" -#| "This flag has the I effect as the B(2) B " -#| "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 as well." +#: build/C/man2/unshare.2:128 msgid "" "This flag has the same effect as the B(2) B 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. B requires the B capability." +"process. Use of B requires the B capability." msgstr "" -"このフラグは B(2) B フラグとI<同じ>効果を持つ。 マウント" -"名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固有の名前" -"空間のコピーを持つ。 このフラグを指定すると、 B も暗黙のうちに指定" -"される。" +"このフラグは B(2) B フラグと同じ効果を持つ。ネット\n" +"ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n" +"い固有のネットワーク名前空間のコピーを持つ。B を使用する\n" +"には B ケーパビリティが必要である。" #. type: TP -#: build/C/man2/unshare.2:105 +#: build/C/man2/unshare.2:128 #, no-wrap msgid "B" msgstr "B" @@ -4393,13 +6816,7 @@ msgstr "B" #. CLONE_FS, and CLONE_FILES reverse the action of the clone() #. flags of the same name. #. type: Plain text -#: build/C/man2/unshare.2:126 -#, fuzzy -#| msgid "" -#| "This flag has the I effect as the B(2) B " -#| "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 as well." +#: build/C/man2/unshare.2:149 msgid "" "This flag has the same effect as the B(2) B flag. " "Unshare the mount namespace, so that the calling process has a private copy " @@ -4407,79 +6824,135 @@ msgid "" "this flag automatically implies B as well. Use of B " "requires the B capability." msgstr "" -"このフラグは B(2) B フラグとI<同じ>効果を持つ。 マウント" -"名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固有の名前" -"空間のコピーを持つ。 このフラグを指定すると、 B も暗黙のうちに指定" -"される。" +"このフラグは B(2) B フラグと同じ効果を持つ。 マウン\n" +"ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固\n" +"有の名前空間のコピーを持つ。 このフラグを指定すると、 B も暗\n" +"黙のうちに指定される。 B を使用するには B\n" +"ケーパビリティが必要である。" + +#. type: Plain text +#: build/C/man2/unshare.2:176 +msgid "" +"This flag has the same effect as the B(2) B 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 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(1) in the new namespace. B " +"automatically implies B as well. Use of B " +"requires the B capability. For further information, see " +"B(7)." +msgstr "" +"このフラグは B(2) B フラグと同じ効果を持つ。 PID 名前空" +"間を共有しない。 呼び出し元プロセスは、 すでに存在するどのプロセスとも共有さ" +"れない新しい PID 名前空間を、 自身の子プロセス用に持つことになる。 このプロセ" +"スにより作成される最初の子プロセスはプロセス ID 1 を持ち、 この新しい名前空間" +"において B(1) の役割を持つとみなされる。 B を指定すると、" +"自動的に B も指定されたものとみなされる。 B を使" +"用するには B ケーパビリティが必要である。 詳細な情報は " +"B(7) を参照。" + +#. type: Plain text +#: build/C/man2/unshare.2:190 +msgid "" +"This flag has the same effect as the B(2) B 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(2) with the B " +"flag, the caller obtains a full set of capabilities in the new namespace." +msgstr "" +"このフラグは B(2) B フラグと同じ効果を持つ。 ユーザー名" +"前空間を共有せず、 呼び出し元プロセスはすでに存在するどのプロセスとも共有され" +"ない新しいユーザー名前空間に移動される。 B フラグを指定して " +"B(2) で作成された子プロセスと同様に、 呼び出し元は新しい名前空間ですべ" +"てのケーパビリティを獲得する。" + +#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 +#. https://lwn.net/Articles/543273/ +#. type: Plain text +#: build/C/man2/unshare.2:206 +msgid "" +"B requires that the calling process is not threaded; " +"specifying B automatically implies B. Since " +"Linux 3.9, B also automatically implies B. " +"B 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 "" +"B を使うには、呼び出し元プロセスがスレッド化されていないことが" +"必要である。 B を指定すると、自動的に B が指定さ" +"れたものとみなされる。 Linux 3.9 以降では、 B が指定された場" +"合 B も指定されたとみなされる。 B を使うには、呼び出" +"し元プロセスのユーザー ID とグループ ID が、 呼び出した時点で、 呼び出し元プ" +"ロセスのユーザー名前空間のユーザー ID とグループ ID にマッピングされている必" +"要がある。" + +#. type: Plain text +#: build/C/man2/unshare.2:223 +msgid "" +"This flag has the same effect as the B(2) B 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 requires the B capability." +msgstr "" +"このフラグは B(2) B フラグと同じ効果を持つ。 UTS\n" +"IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない\n" +"固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、\n" +"B も暗黙のうちに指定される。B を使用するには\n" +"B ケーパビリティが必要である。" #. type: TP -#: build/C/man2/unshare.2:126 -#, fuzzy, no-wrap -#| msgid "B (since Linux 2.5.10)" +#: build/C/man2/unshare.2:223 +#, no-wrap msgid "B (since Linux 2.6.26)" -msgstr "B (Linux 2.5.10 以降)" +msgstr "B (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/man2/unshare.2:140 -#, fuzzy -#| msgid "" -#| "This flag has the I effect as the B(2) B " -#| "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 as well." +#: build/C/man2/unshare.2:243 msgid "" "This flag reverses the effect of the B(2) B 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 requires the B capability." -msgstr "" -"このフラグは B(2) B フラグとI<同じ>効果を持つ。 マウント" -"名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固有の名前" -"空間のコピーを持つ。 このフラグを指定すると、 B も暗黙のうちに指定" -"される。" +"Unshare System\\ V semaphore adjustment (I) values, so that the " +"calling process has a new empty I 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 list, then the adjustments in that list are " +"applied to the corresponding semaphores, as described in B(2)." +msgstr "" +"このフラグは B(2) B フラグの効果を逆転させる。 System" +"\\ V セマフォの調整値 (I) を共有せず、 呼び出し元プロセスは他のプロセ" +"スとは共有されない新しい空の I リストを持つ。 そのプロセスが、自分の" +"現在の I リストへの参照を持つ最後のプロセスであれば、 このリストの調" +"整値は対応するセマフォに適用される (B(2) に説明がある通り)。" -#. As at 2.6.16, the following forced implications also apply, +# +#. 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. -#. 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. +#. See kernel/fork.c::check_unshare_flags() #. type: Plain text -#: build/C/man2/unshare.2:176 -#, fuzzy -#| msgid "" -#| "This flag has the I effect as the B(2) B " -#| "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 as well." +#: build/C/man2/unshare.2:270 msgid "" -"This flag has the same effect as the B(2) B 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 requires the B capability." +"In addition, B, B, and B can be " +"specified in I 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 " +"automatically implies B, and specifying B automatically " +"implies B.) If the process is multithreaded, then the use of " +"these flags results in an error." msgstr "" -"このフラグは B(2) B フラグとI<同じ>効果を持つ。 マウント" -"名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固有の名前" -"空間のコピーを持つ。 このフラグを指定すると、 B も暗黙のうちに指定" -"される。" +"上記に加えて、 呼び出し元がシングルスレッドの場合 (すなわち別のプロセスやス" +"レッドとアドレス空間を共有していない場合)、 B, " +"B, B を指定することができる。 この場合、 これらのフ" +"ラグは効果を持たない。 (B を指定すると自動的に B が指" +"定されたとみなされ、 B を指定すると自動的に B が指定" +"されたとみなされる点に注意してほしい。) プロセスがマルチスレッドの場合、 これ" +"らのフラグを使用するとエラーとなる。" #. type: Plain text -#: build/C/man2/unshare.2:183 +#: build/C/man2/unshare.2:277 msgid "" "If I is specified as zero, then B() is a no-op; no changes " "are made to the calling process's execution context." @@ -4488,7 +6961,7 @@ msgstr "" "元プロセスの実行コンテキストは、何も変更されない。" #. type: Plain text -#: build/C/man2/unshare.2:188 +#: build/C/man2/unshare.2:282 msgid "" "On success, zero returned. On failure, -1 is returned and I is set " "to indicate the error." @@ -4497,48 +6970,50 @@ msgstr "" "ラーを示す値が設定される。" #. type: Plain text -#: build/C/man2/unshare.2:193 +#: build/C/man2/unshare.2:287 msgid "An invalid bit was specified in I." msgstr "I に不正なビットが指定された。" #. type: Plain text -#: build/C/man2/unshare.2:197 +#: build/C/man2/unshare.2:296 +msgid "" +"B, B, or B was specified in I, " +"and the caller is multithreaded." +msgstr "" +"B, B, B が I に指定されたが、 " +"呼び出したプロセスはマルチスレッドである。" + +#. type: Plain text +#: build/C/man2/unshare.2:300 msgid "" "Cannot allocate sufficient memory to copy parts of caller's context that " "need to be unshared." msgstr "" "呼び出し元のコンテキストのうち共有を解除する必要がある部分をコピーするため" -"に、 十分なメモリが確保できなかった。" +"に、 十分なメモリーが確保できなかった。" #. type: Plain text -#: build/C/man2/unshare.2:200 -#, fuzzy -#| msgid "" -#| "The calling thread did not have the required privilege " -#| "(B) for this operation." +#: build/C/man2/unshare.2:303 msgid "" "The calling process did not have the required privileges for this operation." -msgstr "" -"The calling thread did not have the required privilege (B) " -"for this operation." +msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。" #. type: Plain text -#: build/C/man2/unshare.2:204 +#: build/C/man2/unshare.2:334 msgid "The B() system call was added to Linux in kernel 2.6.16." msgstr "B() システムコールは Linux カーネル 2.6.16 で追加された。" #. type: Plain text -#: build/C/man2/unshare.2:208 +#: build/C/man2/unshare.2:338 msgid "The B() system call is Linux-specific." msgstr "B() システムコールは 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 -#. FIXME . check future kernel versions (e.g., 2.6.17) -#. to see if CLONE_VM gets implemented. -#. However, as at 2.6.16, we can do unshare(CLONE_VM) if CLONE_VM +#. 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 @@ -4552,213 +7027,222 @@ msgstr "B() システムコールは Linux 固有である。" #. be incrementally added to unshare without affecting legacy #. applications using unshare. #. type: Plain text -#: build/C/man2/unshare.2:244 +#: build/C/man2/unshare.2:372 msgid "" "Not all of the process attributes that can be shared when a new process is " "created using B(2) can be unshared using B(). In " -"particular, as at kernel 2.6.16, B() does not implement flags that " -"reverse the effects of B, B, B, " -"or B. Such functionality may be added in the future, if required." +"particular, as at kernel 3.8, B() does not implement flags that " +"reverse the effects of B, B, or B. " +"Such functionality may be added in the future, if required." msgstr "" "B(2) で新しいプロセスを生成したときに共有される全てのプロセス属性" "を、 B() によって共有の解除ができるわけではない。 特に、カーネル " -"2.6.16 においては、 B() に B, B, " -"B, B の効果を取り消すためのフラグが実装されていな" -"い。 これらの機能は、必要であれば将来追加されるかもしれない。" +"3.8 時点では、 B() に B, B, " +"B の効果を取り消すためのフラグが実装されていない。 これらの機能は、" +"必要であれば将来追加されるかもしれない。" #. type: Plain text -#: build/C/man2/unshare.2:248 -msgid "B(2), B(2), B(2), Documentation/unshare.txt" -msgstr "B(2), B(2), B(2), Documentation/unshare.txt" - -#. type: TH -#: build/C/man3/get_nprocs_conf.3:24 -#, no-wrap -msgid "GET_NPROCS" +#: build/C/man2/unshare.2:381 +msgid "" +"The program below provides a simple implementation of the B(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 "" +"以下のプログラムは B(1) コマンドの簡単な実装である。 このコマンド" +"は、1 つ以上の名前空間の unshare を行ってから、 コマンドライン引き数で指定さ" +"れたコマンドを実行する。 以下はこのプログラムの使用例である。 新しいマウント" +"名前空間でシェルを実行し、 元のシェルと新しいシェルが別のマウント名前空間にい" +"ることを確認している。" -#. type: TH -#: build/C/man3/get_nprocs_conf.3:24 -#, fuzzy, no-wrap -#| msgid "2006-03-23" -msgid "2012-03-20" -msgstr "2006-03-23" - -#. type: TH -#: build/C/man3/get_nprocs_conf.3:24 +#. type: Plain text +#: build/C/man2/unshare.2:390 #, no-wrap -msgid "GNU" +msgid "" +"$ B\n" +"mnt:[4026531840]\n" +"$ B\n" +"[sudo] password for cecilia:\n" +"# B\n" +"mnt:[4026532325]\n" msgstr "" +"$ B\n" +"mnt:[4026531840]\n" +"$ B\n" +"[sudo] password for cecilia:\n" +"# B\n" +"mnt:[4026532325]\n" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:27 -msgid "get_nprocs, get_nprocs_conf - get number of processors" +#: build/C/man2/unshare.2:396 +msgid "" +"The differing output of the two B(1) commands shows that the two " +"shells are in different mount namespaces." msgstr "" +"2 つの B(1) コマンドの出力が違うことから、 2 つのシェルは異なるマウ" +"ント名前空間にいることが分かる。" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:29 -#, fuzzy -#| msgid "B<#include Esched.hE>" -msgid "B<#include Esys/sysinfo.hE>" -msgstr "B<#include Esched.hE>" - -#. type: Plain text -#: build/C/man3/get_nprocs_conf.3:31 -#, fuzzy -#| msgid "B\n" -msgid "B" -msgstr "B\n" - -#. type: Plain text -#: build/C/man3/get_nprocs_conf.3:33 -#, fuzzy -#| msgid "B\n" -msgid "B" -msgstr "B\n" +#: build/C/man2/unshare.2:400 +#, no-wrap +msgid "/* unshare.c\n" +msgstr "/* unshare.c\n" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:37 +#: build/C/man2/unshare.2:409 +#, no-wrap msgid "" -"The function B() returns the number of processors " -"configured by the operating system." +" A simple implementation of the unshare(1) command: unshare\n" +" namespaces and execute a command.\n" +"*/\n" +"#define _GNU_SOURCE\n" +"#include Esched.hE\n" +"#include Eunistd.hE\n" +"#include Estdlib.hE\n" +"#include Estdio.hE\n" msgstr "" +" A simple implementation of the unshare(1) command: unshare\n" +" namespaces and execute a command.\n" +"*/\n" +"#define _GNU_SOURCE\n" +"#include Esched.hE\n" +"#include Eunistd.hE\n" +"#include Estdlib.hE\n" +"#include Estdio.hE\n" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:44 +#: build/C/man2/unshare.2:412 +#, no-wrap msgid "" -"The function B() returns the number of processors currently " -"available in the system. This may be less than the number returned by " -"B() because processors may be offline (e.g., on " -"hotpluggable systems)." +"/* A simple error-handling function: print an error message based\n" +" on the value in \\(aqerrno\\(aq and terminate the calling process */\n" msgstr "" +"/* A simple error-handling function: print an error message based\n" +" on the value in \\(aqerrno\\(aq and terminate the calling process */\n" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:46 -#, fuzzy -#| msgid "DESCRIPTION" -msgid "As given in DESCRIPTION." -msgstr "説明" - -#. type: Plain text -#: build/C/man3/get_nprocs_conf.3:48 -msgid "These functions are GNU extensions." +#: build/C/man2/unshare.2:429 +#, no-wrap +msgid "" +"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 "" +"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" -#. glibc 2.15 #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:55 +#: build/C/man2/unshare.2:434 +#, no-wrap msgid "" -"The current implementation of these functions is rather expensive, since " -"they open and parse files in the I file system each time they are " -"called." +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" int flags, opt;\n" msgstr "" +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" int flags, opt;\n" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:60 -msgid "" -"The following B(3) calls make use of the functions documented on " -"this page to return the same information." -msgstr "" +#: build/C/man2/unshare.2:436 +#, no-wrap +msgid " flags = 0;\n" +msgstr " flags = 0;\n" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:64 +#: build/C/man2/unshare.2:448 #, no-wrap msgid "" -" np = sysconf(_SC_NPROCESSORS_CONF); /* processors configured */\n" -" np = sysconf(_SC_NPROCESSORS_ONLN); /* processors available */\n" +" 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 "" +" 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" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:71 +#: build/C/man2/unshare.2:451 +#, no-wrap msgid "" -"The following example shows how B() and B() " -"can be used." +" if (optind E= argc)\n" +" usage(argv[0]);\n" msgstr "" +" if (optind E= argc)\n" +" usage(argv[0]);\n" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:75 +#: build/C/man2/unshare.2:454 #, no-wrap msgid "" -"#include Estdio.hE\n" -"#include Esys/sysinfo.hE\n" +" if (unshare(flags) == -1)\n" +" errExit(\"unshare\");\n" msgstr "" +" if (unshare(flags) == -1)\n" +" errExit(\"unshare\");\n" #. type: Plain text -#: build/C/man3/get_nprocs_conf.3:84 +#: build/C/man2/unshare.2:458 #, no-wrap msgid "" -"int\n" -"main(int argc, char *argv[])\n" -"{\n" -" printf(\"This system has %d processors configured and \"\n" -" \"%d processors available.\\en\",\n" -" get_nprocs_conf(), get_nprocs());\n" -" return 0;\n" +" execvp(argv[optind], &argv[optind]);\n" +" errExit(\"execvp\");\n" "}\n" msgstr "" +" execvp(argv[optind], &argv[optind]);\n" +" errExit(\"execvp\");\n" +"}\n" -#~ msgid "COLOPHON" -#~ msgstr "この文書について" +#. type: Plain text +#: build/C/man2/unshare.2:467 +msgid "" +"B(1), B(2), B(2), B(2), B(2), " +"B(2), B(7)" +msgstr "" +"B(1), B(2), B(2), B(2), B(2), " +"B(2), B(7)" -#, fuzzy -#~| msgid "" -#~| "This page is part of release 3.37 of the Linux I project. A " -#~| "description of the project, and information about reporting bugs, can be " -#~| "found at http://www.kernel.org/doc/man-pages/." -#~ msgid "" -#~ "This page is part of release 3.38 of the Linux I project. A " -#~ "description of the project, and information about reporting bugs, can be " -#~ "found at http://www.kernel.org/doc/man-pages/." -#~ msgstr "" -#~ "この man ページは Linux I プロジェクトのリリース 3.37 の一部で" -#~ "ある。\n" -#~ "プロジェクトの説明とバグ報告に関する情報は\n" -#~ "http://www.kernel.org/doc/man-pages/ に書かれている。" - -#~ msgid "2010-09-10" -#~ msgstr "2010-09-10" - -#~ msgid "2007-04-06" -#~ msgstr "2007-04-06" - -#~ msgid "" -#~ "If I is zero, the time quantum for the calling process is written " -#~ "into I<*tp>. The identified process should be running under the " -#~ "B scheduling policy. POSIX systems on which " -#~ "B() is available define " -#~ "B<_POSIX_PRIORITY_SCHEDULING> in Iunistd.hE>." -#~ msgstr "" -#~ "I がゼロの場合、呼び出したプロセスの時間量が I<*tp> に書き込まれる。" -#~ "指定したプロセスは B スケジューリング方針で稼動している必要があ" -#~ "る。 B() の使用可能な POSIX システムでは " -#~ "Iunistd.hE> で B<_POSIX_PRIORITY_SCHEDULING> が定義されている。" - -#~ msgid "2010-11-01" -#~ msgstr "2010-11-01" - -#~ msgid "" -#~ "I You probably never wanted " -#~ "to use it, you certainly shouldn't be using it, and soon it will go away." -#~ msgstr "" -#~ "I このフラグを使いたいと思" -#~ "うことは決してないだろうし、 確実に使わないようにすべきである。 このフラグ" -#~ "は近いうちになくなることだろう。" - -#~ msgid "2008-11-06" -#~ msgstr "2008-11-06" - -#~ msgid "" -#~ "Special rules apply for the B: an unprivileged process " -#~ "operating under this policy cannot change its policy, regardless of the " -#~ "value of its B resource limit." -#~ msgstr "" -#~ "B には特別なルールが適用され、 このポリシーの下で動作する非特" -#~ "権プロセスは、リソース制限 B の値にかかわらず自身のポリシー" -#~ "を変更することができない。" - -#~ msgid "" -#~ "I specified B but the calling process was not " -#~ "privileged (did not have the B capability)." -#~ msgstr "" -#~ "I に B が指定されたが、呼び出し元プロセスに特権 " -#~ "(B ケーパビリティ) がなかった。" +#. type: Plain text +#: build/C/man2/unshare.2:470 +msgid "I in the Linux kernel source tree" +msgstr "Linux カーネルソース内の I"