OSDN Git Service

LDP: Update POT and ja.po to LDP v3.79
[linuxjm/LDP_man-pages.git] / po4a / sched / po / sched.pot
index 32994bc..532fb93 100644 (file)
@@ -7,13 +7,13 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2013-03-22 01:06+0900\n"
+"POT-Creation-Date: 2015-02-04 23:33+0900\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 #. type: TH
@@ -29,19 +29,19 @@ msgid "2012-03-15"
 msgstr ""
 
 #. type: TH
-#: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:45 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_setparam.2:30 build/C/man2/sched_setscheduler.2:46 build/C/man2/sched_yield.2:29 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
+#: 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 ""
 
 #. type: TH
-#: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:45 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_setparam.2:30 build/C/man2/sched_setscheduler.2:46 build/C/man2/sched_yield.2:29 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
+#: 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 ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:28 build/C/man2/clone.2:46 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_setparam.2:31 build/C/man2/sched_setscheduler.2:47 build/C/man2/sched_yield.2:30 build/C/man2/setns.2:9 build/C/man2/unshare.2:21
+#: 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 ""
@@ -56,15 +56,13 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:35 build/C/man2/clone.2:48 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_setparam.2:33 build/C/man2/sched_setscheduler.2:50 build/C/man2/sched_yield.2:32 build/C/man2/setns.2:11 build/C/man2/unshare.2:23
+#: 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:39 build/C/man2/clone.2:54 build/C/man2/sched_setaffinity.2:42 build/C/man2/setns.2:15 build/C/man2/unshare.2:29
+#: 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"
@@ -164,7 +162,7 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:79 build/C/man2/clone.2:60 build/C/man2/kcmp.2:41 build/C/man2/sched_get_priority_max.2:38 build/C/man3/sched_getcpu.3:37 build/C/man2/sched_rr_get_interval.2:36 build/C/man2/sched_setaffinity.2:49 build/C/man2/sched_setparam.2:47 build/C/man2/sched_setscheduler.2:66 build/C/man2/sched_yield.2:36 build/C/man2/setns.2:18 build/C/man2/unshare.2:32
+#: 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 ""
@@ -179,7 +177,7 @@ msgstr ""
 #. type: Plain text
 #: build/C/man3/CPU_SET.3:93
 msgid ""
-"The I<cpu_set_t> data type is implemented as a bitset.  However, the data "
+"The I<cpu_set_t> 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 ""
@@ -385,7 +383,7 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:210 build/C/man2/clone.2:806 build/C/man2/kcmp.2:124 build/C/man2/sched_get_priority_max.2:86 build/C/man3/sched_getcpu.3:40 build/C/man2/sched_rr_get_interval.2:73 build/C/man2/sched_setaffinity.2:107 build/C/man2/sched_setparam.2:87 build/C/man2/sched_setscheduler.2:422 build/C/man2/sched_yield.2:41 build/C/man2/setns.2:70 build/C/man2/unshare.2:189
+#: 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 ""
@@ -429,7 +427,7 @@ msgid "The other functions do not return a value."
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:241 build/C/man2/clone.2:923 build/C/man2/kcmp.2:195 build/C/man3/sched_getcpu.3:52 build/C/man2/sched_setaffinity.2:148 build/C/man2/setns.2:97 build/C/man2/unshare.2:206
+#: 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 ""
@@ -456,7 +454,7 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:930 build/C/man2/kcmp.2:199 build/C/man2/sched_get_priority_max.2:100 build/C/man3/sched_getcpu.3:54 build/C/man2/sched_rr_get_interval.2:94 build/C/man2/sched_setaffinity.2:159 build/C/man2/sched_setparam.2:110 build/C/man2/sched_setscheduler.2:444 build/C/man2/sched_yield.2:52 build/C/man2/setns.2:102 build/C/man2/unshare.2:210
+#: 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 ""
@@ -467,7 +465,7 @@ msgid "These interfaces are Linux-specific."
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:272 build/C/man2/clone.2:937 build/C/man2/kcmp.2:202 build/C/man3/sched_getcpu.3:57 build/C/man2/sched_rr_get_interval.2:96 build/C/man2/sched_setaffinity.2:161 build/C/man2/sched_setparam.2:112 build/C/man2/sched_setscheduler.2:447 build/C/man2/sched_yield.2:54 build/C/man2/setns.2:106 build/C/man2/unshare.2:214
+#: 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 ""
@@ -480,7 +478,7 @@ msgstr ""
 #. type: Plain text
 #: 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<sizeof(unsigned long)>.  An application should consider "
 "the contents of these extra bits to be undefined."
@@ -491,7 +489,7 @@ msgstr ""
 msgid ""
 "Notwithstanding the similarity in the names, note that the constant "
 "B<CPU_SETSIZE> indicates the number of CPUs in the I<cpu_set_t> 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<setsize> argument of the B<CPU_*_S>()  macros is a size in bytes."
 msgstr ""
 
@@ -505,7 +503,7 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:300 build/C/man2/clone.2:984 build/C/man2/sched_setscheduler.2:530
+#: 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 ""
@@ -523,7 +521,7 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:312 build/C/man2/clone.2:1026 build/C/man2/setns.2:112
+#: 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 ""
@@ -617,7 +615,7 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:356 build/C/man2/clone.2:1124 build/C/man2/kcmp.2:219 build/C/man2/sched_get_priority_max.2:102 build/C/man3/sched_getcpu.3:77 build/C/man2/sched_rr_get_interval.2:125 build/C/man2/sched_setaffinity.2:214 build/C/man2/sched_setparam.2:118 build/C/man2/sched_setscheduler.2:538 build/C/man2/sched_yield.2:78 build/C/man2/setns.2:199 build/C/man2/unshare.2:248
+#: 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 ""
@@ -630,38 +628,51 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man3/CPU_SET.3:361 build/C/man2/clone.2:1138 build/C/man2/kcmp.2:222 build/C/man2/sched_get_priority_max.2:114 build/C/man3/sched_getcpu.3:79 build/C/man2/sched_rr_get_interval.2:131 build/C/man2/sched_setaffinity.2:233 build/C/man2/sched_setparam.2:134 build/C/man2/sched_setscheduler.2:567 build/C/man2/sched_yield.2:84 build/C/man2/setns.2:205 build/C/man2/unshare.2:257
+#: 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:368 build/C/man2/clone.2:1145 build/C/man2/kcmp.2:229 build/C/man2/sched_get_priority_max.2:121 build/C/man3/sched_getcpu.3:86 build/C/man2/sched_rr_get_interval.2:138 build/C/man2/sched_setaffinity.2:240 build/C/man2/sched_setparam.2:141 build/C/man2/sched_setscheduler.2:574 build/C/man2/sched_yield.2:91 build/C/man2/setns.2:212 build/C/man2/unshare.2:264
+#: 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
 msgid ""
-"This page is part of release 3.50 of the Linux I<man-pages> project.  A "
-"description of the project, and information about reporting bugs, can be "
-"found at http://www.kernel.org/doc/man-pages/."
+"This page is part of release 3.79 of the Linux I<man-pages> project.  A "
+"description of the project, information about reporting bugs, and the latest "
+"version of this page, can be found at "
+"\\%http://www.kernel.org/doc/man-pages/."
 msgstr ""
 
 #. type: TH
-#: build/C/man2/clone.2:45
+#: build/C/man2/clone.2:42
 #, no-wrap
 msgid "CLONE"
 msgstr ""
 
 #. type: TH
-#: build/C/man2/clone.2:45 build/C/man2/setns.2:8
+#: build/C/man2/clone.2:42 build/C/man2/unshare.2:20
 #, no-wrap
-msgid "2013-01-01"
+msgid "2014-09-21"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:48
+#: build/C/man2/clone.2:45
 msgid "clone, __clone2 - create a child process"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:59
+#: build/C/man2/clone.2:48
+#, no-wrap
+msgid "/* Prototype for the glibc wrapper function */\n"
+msgstr ""
+
+#. 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 E<lt>sched.hE<gt>>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:55
 #, no-wrap
 msgid ""
 "B<int clone(int (*>I<fn>B<)(void *), void *>I<child_stack>B<,>\n"
@@ -671,33 +682,91 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:71
+#: build/C/man2/clone.2:57
+#, no-wrap
+msgid "/* Prototype for the raw system call */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:61
+#, no-wrap
+msgid ""
+"B<long clone(unsigned long >I<flags>B<, void *>I<child_stack>B<,>\n"
+"B<          void *>I<ptid>B<, void *>I<ctid>B<,>\n"
+"B<          struct pt_regs *>I<regs>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:66
+msgid ""
+"Feature Test Macro Requirements for glibc wrapper function (see "
+"B<feature_test_macros>(7)):"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:69
+msgid "B<clone>():"
+msgstr ""
+
+#. 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 ""
+
+#. 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 ""
+
+#.  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 ""
+
+#. 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 ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:87
+msgid "B<clone>()  creates a new process, in a manner similar to B<fork>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:94
 msgid ""
-"B<clone>()  creates a new process, in a manner similar to B<fork>(2).  It is "
-"actually a library function layered on top of the underlying B<clone>()  "
-"system call, hereinafter referred to as B<sys_clone>.  A description of "
-"B<sys_clone> is given toward the end of this page."
+"This page describes both the glibc B<clone>()  wrapper function and the "
+"underlying system call on which it is based.  The main text describes the "
+"wrapper function; the differences for the raw system call are described "
+"toward the end of this page."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:83
+#: build/C/man2/clone.2:106
 msgid ""
-"Unlike B<fork>(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<fork>(2), B<clone>()  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<CLONE_PARENT> below.)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:88
+#: build/C/man2/clone.2:111
 msgid ""
 "The main use of B<clone>()  is to implement threads: multiple threads of "
 "control in a program that run concurrently in a shared memory space."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:108
+#: build/C/man2/clone.2:131
 msgid ""
 "When the child process is created with B<clone>(), it executes the function "
 "I<fn>(I<arg>).  (This differs from B<fork>(2), where execution continues in "
@@ -707,7 +776,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:118
+#: build/C/man2/clone.2:141
 msgid ""
 "When the I<fn>(I<arg>)  function application returns, the child process "
 "terminates.  The integer returned by I<fn> is the exit code for the child "
@@ -716,7 +785,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:134
+#: build/C/man2/clone.2:157
 msgid ""
 "The I<child_stack> argument specifies the location of the stack used by the "
 "child process.  Since the child and calling process may share memory, it is "
@@ -729,7 +798,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:150
+#: build/C/man2/clone.2:173
 msgid ""
 "The low byte of I<flags> contains the number of the I<termination signal> "
 "sent to the parent when the child dies.  If this signal is specified as "
@@ -740,7 +809,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:155
+#: build/C/man2/clone.2:178
 msgid ""
 "I<flags> may also be bitwise-or'ed with zero or more of the following "
 "constants, in order to specify what is shared between the calling process "
@@ -748,13 +817,13 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:155
+#: build/C/man2/clone.2:178
 #, no-wrap
 msgid "B<CLONE_CHILD_CLEARTID> (since Linux 2.5.49)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:165
+#: build/C/man2/clone.2:188
 msgid ""
 "Erase child thread ID at location I<ctid> in child memory when the child "
 "exits, and do a wakeup on the futex at that address.  The address involved "
@@ -763,24 +832,24 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:165
+#: build/C/man2/clone.2:188
 #, no-wrap
 msgid "B<CLONE_CHILD_SETTID> (since Linux 2.5.49)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:170
+#: build/C/man2/clone.2:193
 msgid "Store child thread ID at location I<ctid> in child memory."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:170
+#: build/C/man2/clone.2:193
 #, no-wrap
 msgid "B<CLONE_FILES> (since Linux 2.0)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:183
+#: build/C/man2/clone.2:206
 msgid ""
 "If B<CLONE_FILES> is set, the calling process and the child process share "
 "the same file descriptor table.  Any file descriptor created by the calling "
@@ -791,7 +860,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:197
+#: build/C/man2/clone.2:220
 msgid ""
 "If B<CLONE_FILES> is not set, the child process inherits a copy of all file "
 "descriptors opened in the calling process at the time of B<clone>().  (The "
@@ -803,38 +872,38 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:197
+#: build/C/man2/clone.2:220
 #, no-wrap
 msgid "B<CLONE_FS> (since Linux 2.0)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:212
+#: build/C/man2/clone.2:235
 msgid ""
-"If B<CLONE_FS> 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<chroot>(2), B<chdir>(2), or "
-"B<umask>(2)  performed by the calling process or the child process also "
-"affects the other process."
+"If B<CLONE_FS> is set, the caller and the child process share the same "
+"filesystem information.  This includes the root of the filesystem, the "
+"current working directory, and the umask.  Any call to B<chroot>(2), "
+"B<chdir>(2), or B<umask>(2)  performed by the calling process or the child "
+"process also affects the other process."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:224
+#: build/C/man2/clone.2:247
 msgid ""
-"If B<CLONE_FS> 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<clone>()  "
+"If B<CLONE_FS> is not set, the child process works on a copy of the "
+"filesystem information of the calling process at the time of the B<clone>()  "
 "call.  Calls to B<chroot>(2), B<chdir>(2), B<umask>(2)  performed later by "
 "one of the processes do not affect the other process."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:224
+#: build/C/man2/clone.2:247
 #, no-wrap
 msgid "B<CLONE_IO> (since Linux 2.6.25)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:233
+#: build/C/man2/clone.2:256
 msgid ""
 "If B<CLONE_IO> is set, then the new process shares an I/O context with the "
 "calling process.  If this flag is not set, then (as with B<fork>(2))  the "
@@ -845,7 +914,7 @@ msgstr ""
 #.  the anticipatory and CFQ scheduler
 #.  with CFQ and AS.
 #. type: Plain text
-#: build/C/man2/clone.2:250
+#: 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 "
@@ -858,20 +927,20 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:254
+#: build/C/man2/clone.2:277
 msgid ""
 "If the kernel is not configured with the B<CONFIG_BLOCK> option, this flag "
 "is a no-op."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:254 build/C/man2/unshare.2:78
+#: build/C/man2/clone.2:277 build/C/man2/unshare.2:96
 #, no-wrap
 msgid "B<CLONE_NEWIPC> (since Linux 2.6.19)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:264
+#: build/C/man2/clone.2:287
 msgid ""
 "If B<CLONE_NEWIPC> is set, then create the process in a new IPC namespace.  "
 "If this flag is not set, then (as with B<fork>(2)), the process is created "
@@ -882,9 +951,9 @@ msgstr ""
 #.  commit 7eafd7c74c3f2e67c27621b987b28397110d643f
 #.  https://lwn.net/Articles/312232/
 #. type: Plain text
-#: build/C/man2/clone.2:276
+#: build/C/man2/clone.2:299
 msgid ""
-"An IPC namespace provides an isolated view of System V IPC objects (see "
+"An IPC namespace provides an isolated view of System\\ V IPC objects (see "
 "B<svipc>(7))  and (since Linux 2.6.30)  POSIX message queues (see "
 "B<mq_overview>(7)).  The common characteristic of these IPC mechanisms is "
 "that IPC objects are identified by mechanisms other than filesystem "
@@ -892,7 +961,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:280
+#: build/C/man2/clone.2:303
 msgid ""
 "Objects created in an IPC namespace are visible to all other processes that "
 "are members of that namespace, but are not visible to processes in other IPC "
@@ -900,7 +969,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:284
+#: build/C/man2/clone.2:307
 msgid ""
 "When an IPC namespace is destroyed (i.e., when the last process that is a "
 "member of the namespace terminates), all IPC objects in the namespace are "
@@ -908,40 +977,42 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:293
+#: build/C/man2/clone.2:314
 msgid ""
-"Use of this flag requires: a kernel configured with the B<CONFIG_SYSVIPC> "
-"and B<CONFIG_IPC_NS> options and that the process be privileged "
-"(B<CAP_SYS_ADMIN>).  This flag can't be specified in conjunction with "
-"B<CLONE_SYSVSEM>."
+"Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWIPC>.  "
+"This flag can't be specified in conjunction with B<CLONE_SYSVSEM>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:317
+msgid "For further information on IPC namespaces, see B<namespaces>(7)."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:293 build/C/man2/unshare.2:95
+#: build/C/man2/clone.2:317 build/C/man2/unshare.2:113
 #, no-wrap
 msgid "B<CLONE_NEWNET> (since Linux 2.6.24)"
 msgstr ""
 
-#.  FIXME Check when the implementation was completed
 #. type: Plain text
-#: build/C/man2/clone.2:298
+#: 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 ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:307
+#: build/C/man2/clone.2:330
 msgid ""
 "If B<CLONE_NEWNET> is set, then create the process in a new network "
-"namespace.  If this flag is not set, then (as with B<fork>(2)), the process "
+"namespace.  If this flag is not set, then (as with B<fork>(2))  the process "
 "is created in the same network namespace as the calling process.  This flag "
 "is intended for the implementation of containers."
 msgstr ""
 
-#.  FIXME Add pointer to veth(4) page when it is eventually completed
+#.  FIXME Add pointer to veth(4) page when it is eventually completed
 #. type: Plain text
-#: build/C/man2/clone.2:322
+#: 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 "
@@ -954,61 +1025,50 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:327
+#: 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<namespaces>(7)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:332
-msgid ""
-"Use of this flag requires: a kernel configured with the B<CONFIG_NET_NS> "
-"option and that the process be privileged (B<CAP_SYS_ADMIN>)."
+#: build/C/man2/clone.2:357
+msgid "Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWNET>."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:332
+#: build/C/man2/clone.2:357
 #, no-wrap
 msgid "B<CLONE_NEWNS> (since Linux 2.4.19)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:335
-msgid "Start the child in a new mount namespace."
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/clone.2:356
+#: build/C/man2/clone.2:367
 msgid ""
-"Every process lives in a mount namespace.  The I<namespace> of a process is "
-"the data (the set of mounts) describing the file hierarchy as seen by that "
-"process.  After a B<fork>(2)  or B<clone>()  where the B<CLONE_NEWNS> flag "
-"is not set, the child lives in the same mount namespace as the parent.  The "
-"system calls B<mount>(2)  and B<umount>(2)  change the mount namespace of "
-"the calling process, and hence affect all processes that live in the same "
-"namespace, but do not affect processes in a different mount namespace."
+"If B<CLONE_NEWNS> is set, the cloned child is started in a new mount "
+"namespace, initialized with a copy of the namespace of the parent.  If "
+"B<CLONE_NEWNS> is not set, the child lives in the same mount namespace as "
+"the parent."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:363
-msgid ""
-"After a B<clone>()  where the B<CLONE_NEWNS> flag is set, the cloned child "
-"is started in a new mount namespace, initialized with a copy of the "
-"namespace of the parent."
+#: build/C/man2/clone.2:370
+msgid "For further information on mount namespaces, see B<namespaces>(7)."
 msgstr ""
 
+#.  See https://lwn.net/Articles/543273/
 #. type: Plain text
-#: build/C/man2/clone.2:375
+#: build/C/man2/clone.2:383
 msgid ""
-"Only a privileged process (one having the B<CAP_SYS_ADMIN> capability)  may "
-"specify the B<CLONE_NEWNS> flag.  It is not permitted to specify both "
-"B<CLONE_NEWNS> and B<CLONE_FS> in the same B<clone>()  call."
+"Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWNS>.  It "
+"is not permitted to specify both B<CLONE_NEWNS> and B<CLONE_FS> in the same "
+"B<clone>()  call."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:375
+#: build/C/man2/clone.2:383
 #, no-wrap
 msgid "B<CLONE_NEWPID> (since Linux 2.6.24)"
 msgstr ""
@@ -1021,125 +1081,145 @@ msgstr ""
 #.  The primary kernel commit is 30e49c263e36341b60b735cbef5ca37912549264
 #.  Author: Pavel Emelyanov <xemul@openvz.org>
 #. type: Plain text
-#: build/C/man2/clone.2:392
+#: build/C/man2/clone.2:400
 msgid ""
 "If B<CLONE_NEWPID> is set, then create the process in a new PID namespace.  "
-"If this flag is not set, then (as with B<fork>(2)), the process is created "
+"If this flag is not set, then (as with B<fork>(2))  the process is created "
 "in the same PID namespace as the calling process.  This flag is intended for "
 "the implementation of containers."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:401
+#: build/C/man2/clone.2:405
+msgid ""
+"For further information on PID namespaces, see B<namespaces>(7)  and "
+"B<pid_namespaces>(7)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:414
 msgid ""
-"A PID namespace provides an isolated environment for PIDs: PIDs in a new "
-"namespace start at 1, somewhat like a standalone system, and calls to "
-"B<fork>(2), B<vfork>(2), or B<clone>()  will produce processes with PIDs "
-"that are unique within the namespace."
+"Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWPID>.  "
+"This flag can't be specified in conjunction with B<CLONE_THREAD> or "
+"B<CLONE_PARENT>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/clone.2:414
+#, no-wrap
+msgid "B<CLONE_NEWUSER>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:424
+msgid ""
+"(This flag first became meaningful for B<clone>()  in Linux 2.6.23, the "
+"current B<clone>()  semantics were merged in Linux 3.5, and the final pieces "
+"to make the user namespaces completely usable were merged in Linux 3.8.)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:413
+#: build/C/man2/clone.2:431
 msgid ""
-"The first process created in a new namespace (i.e., the process created "
-"using the B<CLONE_NEWPID> flag) has the PID 1, and is the \"init\" process "
-"for the namespace.  Children that are orphaned within the namespace will be "
-"reparented to this process rather than B<init>(8).  Unlike the traditional "
-"B<init> process, the \"init\" process of a PID namespace can terminate, and "
-"if it does, all of the processes in the namespace are terminated."
+"If B<CLONE_NEWUSER> is set, then create the process in a new user "
+"namespace.  If this flag is not set, then (as with B<fork>(2))  the process "
+"is created in the same user namespace as the calling process."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:432
+#: build/C/man2/clone.2:436
 msgid ""
-"PID namespaces form a hierarchy.  When a new PID namespace is created, the "
-"processes in that namespace are visible in the PID namespace of the process "
-"that created the new namespace; analogously, if the parent PID namespace is "
-"itself the child of another PID namespace, then processes in the child and "
-"parent PID namespaces will both be visible in the grandparent PID "
-"namespace.  Conversely, the processes in the \"child\" PID namespace do not "
-"see the processes in the parent namespace.  The existence of a namespace "
-"hierarchy means that each process may now have multiple PIDs: one for each "
-"namespace in which it is visible; each of these PIDs is unique within the "
-"corresponding namespace.  (A call to B<getpid>(2)  always returns the PID "
-"associated with the namespace in which the process lives.)"
+"For further information on user namespaces, see B<namespaces>(7)  and "
+"B<user_namespaces>(7)"
 msgstr ""
 
-#.  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:448
+#: build/C/man2/clone.2:447
 msgid ""
-"After creating the new namespace, it is useful for the child to change its "
-"root directory and mount a new procfs instance at I</proc> so that tools "
-"such as B<ps>(1)  work correctly.  (If B<CLONE_NEWNS> is also included in "
-"I<flags>, then it isn't necessary to change the root directory: a new procfs "
-"instance can be mounted directly over I</proc>.)"
+"Before Linux 3.8, use of B<CLONE_NEWUSER> required that the caller have "
+"three capabilities: B<CAP_SYS_ADMIN>, B<CAP_SETUID>, and B<CAP_SETGID>.  "
+"Starting with Linux 3.8, no privileges are needed to create a user "
+"namespace."
 msgstr ""
 
+#.  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:455
+#: build/C/man2/clone.2:461
 msgid ""
-"Use of this flag requires: a kernel configured with the B<CONFIG_PID_NS> "
-"option and that the process be privileged (B<CAP_SYS_ADMIN>).  This flag "
-"can't be specified in conjunction with B<CLONE_THREAD>."
+"This flag can't be specified in conjunction with B<CLONE_THREAD> or "
+"B<CLONE_PARENT>.  For security reasons, B<CLONE_NEWUSER> cannot be specified "
+"in conjunction with B<CLONE_FS>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:464 build/C/man2/unshare.2:209
+msgid "For further information on user namespaces, see B<user_namespaces>(7)."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:455 build/C/man2/unshare.2:131
+#: build/C/man2/clone.2:464 build/C/man2/unshare.2:209
 #, no-wrap
 msgid "B<CLONE_NEWUTS> (since Linux 2.6.19)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:467
+#: build/C/man2/clone.2:476
 msgid ""
 "If B<CLONE_NEWUTS> is set, then create the process in a new UTS namespace, "
 "whose identifiers are initialized by duplicating the identifiers from the "
 "UTS namespace of the calling process.  If this flag is not set, then (as "
-"with B<fork>(2)), the process is created in the same UTS namespace as the "
+"with B<fork>(2))  the process is created in the same UTS namespace as the "
 "calling process.  This flag is intended for the implementation of "
 "containers."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:479
+#: build/C/man2/clone.2:487
 msgid ""
 "A UTS namespace is the set of identifiers returned by B<uname>(2); among "
-"these, the domain name and the host name can be modified by "
+"these, the domain name and the hostname can be modified by "
 "B<setdomainname>(2)  and B<sethostname>(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 ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:484
-msgid ""
-"Use of this flag requires: a kernel configured with the B<CONFIG_UTS_NS> "
-"option and that the process be privileged (B<CAP_SYS_ADMIN>)."
+#: build/C/man2/clone.2:492
+msgid "Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWUTS>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:495
+msgid "For further information on UTS namespaces, see B<namespaces>(7)."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:484
+#: build/C/man2/clone.2:495
 #, no-wrap
 msgid "B<CLONE_PARENT> (since Linux 2.3.12)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:491
+#: build/C/man2/clone.2:502
 msgid ""
 "If B<CLONE_PARENT> is set, then the parent of the new child (as returned by "
 "B<getppid>(2))  will be the same as that of the calling process."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:497
+#: build/C/man2/clone.2:508
 msgid ""
 "If B<CLONE_PARENT> is not set, then (as with B<fork>(2))  the child's parent "
 "is the calling process."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:505
+#: build/C/man2/clone.2:516
 msgid ""
 "Note that it is the parent process, as returned by B<getppid>(2), which is "
 "signaled when the child terminates, so that if B<CLONE_PARENT> is set, then "
@@ -1148,26 +1228,26 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:505
+#: build/C/man2/clone.2:516
 #, no-wrap
 msgid "B<CLONE_PARENT_SETTID> (since Linux 2.5.49)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:513
+#: build/C/man2/clone.2:524
 msgid ""
 "Store child thread ID at location I<ptid> in parent and child memory.  (In "
 "Linux 2.5.32-2.5.48 there was a flag B<CLONE_SETTID> that did this.)"
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:513
+#: build/C/man2/clone.2:524
 #, no-wrap
 msgid "B<CLONE_PID> (obsolete)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:524
+#: build/C/man2/clone.2:535
 msgid ""
 "If B<CLONE_PID> is set, the child process is created with the same process "
 "ID as the calling process.  This is good for hacking the system, but "
@@ -1176,39 +1256,39 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:524
+#: build/C/man2/clone.2:535
 #, no-wrap
 msgid "B<CLONE_PTRACE> (since Linux 2.2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:531
+#: build/C/man2/clone.2:542
 msgid ""
 "If B<CLONE_PTRACE> is specified, and the calling process is being traced, "
 "then trace the child also (see B<ptrace>(2))."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:531
+#: build/C/man2/clone.2:542
 #, no-wrap
 msgid "B<CLONE_SETTLS> (since Linux 2.5.32)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:538
+#: build/C/man2/clone.2:549
 msgid ""
 "The I<newtls> argument is the new TLS (Thread Local Storage) descriptor.  "
 "(See B<set_thread_area>(2).)"
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:538
+#: build/C/man2/clone.2:549
 #, no-wrap
 msgid "B<CLONE_SIGHAND> (since Linux 2.0)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:554
+#: build/C/man2/clone.2:565
 msgid ""
 "If B<CLONE_SIGHAND> is set, the calling process and the child process share "
 "the same table of signal handlers.  If the calling process or child process "
@@ -1220,7 +1300,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:565
+#: build/C/man2/clone.2:576
 msgid ""
 "If B<CLONE_SIGHAND> is not set, the child process inherits a copy of the "
 "signal handlers of the calling process at the time B<clone>()  is called.  "
@@ -1229,20 +1309,20 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:573
+#: build/C/man2/clone.2:584
 msgid ""
 "Since Linux 2.6.0-test6, I<flags> must also include B<CLONE_VM> if "
 "B<CLONE_SIGHAND> is specified"
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:573
+#: build/C/man2/clone.2:584
 #, no-wrap
 msgid "B<CLONE_STOPPED> (since Linux 2.6.0-test2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:582
+#: build/C/man2/clone.2:593
 msgid ""
 "If B<CLONE_STOPPED> is set, then the child is initially stopped (as though "
 "it was sent a B<SIGSTOP> signal), and must be resumed by sending it a "
@@ -1251,35 +1331,38 @@ msgstr ""
 
 #.  glibc 2.8 removed this defn from bits/sched.h
 #. type: Plain text
-#: build/C/man2/clone.2:590
+#: build/C/man2/clone.2:601
 msgid ""
 "This flag was I<deprecated> from Linux 2.6.25 onward, and was I<removed> "
 "altogether in Linux 2.6.38."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:590
+#: build/C/man2/clone.2:601
 #, no-wrap
 msgid "B<CLONE_SYSVSEM> (since Linux 2.5.10)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:599
+#: build/C/man2/clone.2:619
 msgid ""
 "If B<CLONE_SYSVSEM> is set, then the child and the calling process share a "
-"single list of System V semaphore undo values (see B<semop>(2)).  If this "
-"flag is not set, then the child has a separate undo list, which is initially "
-"empty."
+"single list of System V semaphore adjustment (I<semadj>)  values (see "
+"B<semop>(2)).  In this case, the shared list accumulates I<semadj> values "
+"across all processes sharing the list, and semaphore adjustments are "
+"performed only when the last process that is sharing the list terminates (or "
+"ceases sharing the list using B<unshare>(2)).  If this flag is not set, then "
+"the child has a separate I<semadj> list that is initially empty."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:599
+#: build/C/man2/clone.2:619
 #, no-wrap
 msgid "B<CLONE_THREAD> (since Linux 2.4.0-test8)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:608
+#: build/C/man2/clone.2:628
 msgid ""
 "If B<CLONE_THREAD> is set, the child is placed in the same thread group as "
 "the calling process.  To make the remainder of the discussion of "
@@ -1288,7 +1371,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:616
+#: 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 "
@@ -1297,7 +1380,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:625
+#: 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 "
@@ -1306,7 +1389,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:635
+#: build/C/man2/clone.2:655
 msgid ""
 "When a call is made to B<clone>()  without specifying B<CLONE_THREAD>, then "
 "the resulting thread is placed in a new thread group whose TGID is the same "
@@ -1314,7 +1397,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:657
+#: build/C/man2/clone.2:677
 msgid ""
 "A new thread created with B<CLONE_THREAD> has the same parent process as the "
 "caller of B<clone>()  (i.e., like B<CLONE_PARENT>), so that calls to "
@@ -1326,14 +1409,14 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:662
+#: build/C/man2/clone.2:682
 msgid ""
 "After all of the threads in a thread group terminate the parent process of "
 "the thread group is sent a B<SIGCHLD> (or other termination) signal."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:667
+#: build/C/man2/clone.2:687
 msgid ""
 "If any of the threads in a thread group performs an B<execve>(2), then all "
 "threads other than the thread group leader are terminated, and the new "
@@ -1341,28 +1424,29 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:673
+#: build/C/man2/clone.2:693
 msgid ""
 "If one of the threads in a thread group creates a child using B<fork>(2), "
 "then any thread in the group can B<wait>(2)  for that child."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:681
+#: build/C/man2/clone.2:706
 msgid ""
 "Since Linux 2.5.35, I<flags> must also include B<CLONE_SIGHAND> if "
-"B<CLONE_THREAD> is specified."
+"B<CLONE_THREAD> is specified (and note that, since Linux 2.6.0-test6, "
+"B<CLONE_SIGHAND> also requires B<CLONE_VM> to be included)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:686
+#: build/C/man2/clone.2:711
 msgid ""
 "Signals may be sent to a thread group as a whole (i.e., a TGID) using "
 "B<kill>(2), or to a specific thread (i.e., TID) using B<tgkill>(2)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:691
+#: 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 "
@@ -1370,7 +1454,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:704
+#: build/C/man2/clone.2:729
 msgid ""
 "Each thread has its own signal mask, as set by B<sigprocmask>(2), but "
 "signals can be pending either: for the whole process (i.e., deliverable to "
@@ -1381,7 +1465,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:716
+#: build/C/man2/clone.2:741
 msgid ""
 "If B<kill>(2)  is used to send a signal to a thread group, and the thread "
 "group has installed a handler for the signal, then the handler will be "
@@ -1392,26 +1476,26 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:716
+#: build/C/man2/clone.2:741
 #, no-wrap
 msgid "B<CLONE_UNTRACED> (since Linux 2.5.46)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:723
+#: build/C/man2/clone.2:748
 msgid ""
 "If B<CLONE_UNTRACED> is specified, then a tracing process cannot force "
 "B<CLONE_PTRACE> on this child process."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:723
+#: build/C/man2/clone.2:748
 #, no-wrap
 msgid "B<CLONE_VFORK> (since Linux 2.2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:735
+#: build/C/man2/clone.2:760
 msgid ""
 "If B<CLONE_VFORK> is set, the execution of the calling process is suspended "
 "until the child releases its virtual memory resources via a call to "
@@ -1419,21 +1503,21 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:741
+#: build/C/man2/clone.2:766
 msgid ""
-"If B<CLONE_VFORK> is not set then both the calling process and the child are "
-"schedulable after the call, and an application should not rely on execution "
-"occurring in any particular order."
+"If B<CLONE_VFORK> is not set, then both the calling process and the child "
+"are schedulable after the call, and an application should not rely on "
+"execution occurring in any particular order."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:741
+#: build/C/man2/clone.2:766
 #, no-wrap
 msgid "B<CLONE_VM> (since Linux 2.0)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:754
+#: build/C/man2/clone.2:779
 msgid ""
 "If B<CLONE_VM> is set, the calling process and the child process run in the "
 "same memory space.  In particular, memory writes performed by the calling "
@@ -1444,7 +1528,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:763
+#: build/C/man2/clone.2:788
 msgid ""
 "If B<CLONE_VM> is not set, the child process runs in a separate copy of the "
 "memory space of the calling process at the time of B<clone>().  Memory "
@@ -1453,23 +1537,23 @@ msgid ""
 msgstr ""
 
 #. type: SS
-#: build/C/man2/clone.2:763
+#: build/C/man2/clone.2:788 build/C/man2/sched_setaffinity.2:212
 #, no-wrap
-msgid "sys_clone"
+msgid "C library/kernel ABI differences"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:779
+#: build/C/man2/clone.2:804
 msgid ""
-"The B<sys_clone> system call corresponds more closely to B<fork>(2)  in that "
-"execution in the child continues from the point of the call.  As such, the "
-"I<fn> and I<arg> arguments of the B<clone>()  wrapper function are omitted.  "
-"Furthermore, the argument order changes.  The raw system call interface is "
-"roughly:"
+"The raw B<clone>()  system call corresponds more closely to B<fork>(2)  in "
+"that execution in the child continues from the point of the call.  As such, "
+"the I<fn> and I<arg> arguments of the B<clone>()  wrapper function are "
+"omitted.  Furthermore, the argument order changes.  The raw system call "
+"interface on x86 and many other architectures is roughly:"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:785
+#: build/C/man2/clone.2:810
 #, no-wrap
 msgid ""
 "B<long clone(unsigned long >I<flags>B<, void *>I<child_stack>B<,>\n"
@@ -1478,23 +1562,87 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:798
+#: build/C/man2/clone.2:821
+msgid ""
+"Another difference for the raw system call is that the I<child_stack> "
+"argument may be zero, in which case copy-on-write semantics ensure that the "
+"child gets separate copies of stack pages when either process modifies the "
+"stack.  In this case, for correct operation, the B<CLONE_VM> option should "
+"not be specified."
+msgstr ""
+
+#. type: Plain text
+#: 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 ""
+
+#. type: SS
+#: build/C/man2/clone.2:829
+#, no-wrap
+msgid "blackfin, m68k, and sparc"
+msgstr ""
+
+#. 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 ""
+
+#. type: SS
+#: build/C/man2/clone.2:833
+#, no-wrap
+msgid "ia64"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:835
+msgid "On ia64, a different interface is used:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:842
+#, no-wrap
+msgid ""
+"B<int __clone2(int (*>I<fn>B<)(void *), >\n"
+"B<             void *>I<child_stack_base>B<, size_t >I<stack_size>B<,>\n"
+"B<             int >I<flags>B<, void *>I<arg>B<, ... >\n"
+"B<          /* pid_t *>I<ptid>B<, struct user_desc *>I<tls>B<, pid_t "
+"*>I<ctid>B< */ );>\n"
+msgstr ""
+
+#. 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<fn> or I<arg> argument, and changes the order of the "
+"arguments so that I<flags> is the first argument, and I<tls> is the last "
+"argument."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:865
 msgid ""
-"Another difference for B<sys_clone> is that the I<child_stack> 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<CLONE_VM> option should not be "
-"specified."
+"B<__clone2>()  operates in the same way as B<clone>(), except that "
+"I<child_stack_base> points to the lowest address of the child's stack area, "
+"and I<stack_size> specifies the size of the stack pointed to by "
+"I<child_stack_base>."
 msgstr ""
 
 #. type: SS
-#: build/C/man2/clone.2:798
+#: build/C/man2/clone.2:865
 #, no-wrap
 msgid "Linux 2.4 and earlier"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:806
+#: build/C/man2/clone.2:873
 msgid ""
 "In Linux 2.4 and earlier, B<clone>()  does not take arguments I<ptid>, "
 "I<tls>, and I<ctid>."
@@ -1503,7 +1651,7 @@ msgstr ""
 #.  gettid(2) returns current->pid;
 #.  getpid(2) returns current->tgid;
 #. type: Plain text
-#: build/C/man2/clone.2:815
+#: 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 "
@@ -1511,30 +1659,30 @@ msgid ""
 msgstr ""
 
 #. type: SH
-#: build/C/man2/clone.2:815 build/C/man2/kcmp.2:167 build/C/man2/sched_get_priority_max.2:96 build/C/man3/sched_getcpu.3:47 build/C/man2/sched_rr_get_interval.2:80 build/C/man2/sched_setaffinity.2:116 build/C/man2/sched_setparam.2:96 build/C/man2/sched_setscheduler.2:432 build/C/man2/sched_yield.2:48 build/C/man2/setns.2:77 build/C/man2/unshare.2:194
+#: 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:816
+#: build/C/man2/clone.2:883
 #, no-wrap
 msgid "B<EAGAIN>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:819
-msgid "Too many processes are already running."
+#: build/C/man2/clone.2:887
+msgid "Too many processes are already running; see B<fork>(2)."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:819 build/C/man2/clone.2:826 build/C/man2/clone.2:841 build/C/man2/clone.2:849 build/C/man2/clone.2:857 build/C/man2/clone.2:865 build/C/man2/clone.2:871 build/C/man2/clone.2:881 build/C/man2/clone.2:889 build/C/man2/clone.2:897 build/C/man2/kcmp.2:178 build/C/man2/sched_get_priority_max.2:97 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_setparam.2:97 build/C/man2/sched_setscheduler.2:433 build/C/man2/setns.2:82 build/C/man2/unshare.2:195
+#: 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<EINVAL>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:826
+#: build/C/man2/clone.2:894
 msgid ""
 "B<CLONE_SIGHAND> was specified, but B<CLONE_VM> was not.  (Since Linux "
 "2.6.0-test6.)"
@@ -1549,68 +1697,82 @@ msgstr ""
 #.  was specified.
 #.  (Since Linux 2.6.0-test6.)
 #. type: Plain text
-#: build/C/man2/clone.2:841
+#: build/C/man2/clone.2:909
 msgid ""
 "B<CLONE_THREAD> was specified, but B<CLONE_SIGHAND> was not.  (Since Linux "
 "2.5.35.)"
 msgstr ""
 
+#.  commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
 #. type: Plain text
-#: build/C/man2/clone.2:849
+#: build/C/man2/clone.2:918
 msgid "Both B<CLONE_FS> and B<CLONE_NEWNS> were specified in I<flags>."
 msgstr ""
 
+#. type: TP
+#: build/C/man2/clone.2:918
+#, no-wrap
+msgid "B<EINVAL> (since Linux 3.9)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:926
+msgid "Both B<CLONE_NEWUSER> and B<CLONE_FS> were specified in I<flags>."
+msgstr ""
+
 #. type: Plain text
-#: build/C/man2/clone.2:857
+#: build/C/man2/clone.2:934
 msgid "Both B<CLONE_NEWIPC> and B<CLONE_SYSVSEM> were specified in I<flags>."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:865
-msgid "Both B<CLONE_NEWPID> and B<CLONE_THREAD> were specified in I<flags>."
+#: build/C/man2/clone.2:946
+msgid ""
+"One (or both) of B<CLONE_NEWPID> or B<CLONE_NEWUSER> and one (or both) of "
+"B<CLONE_THREAD> or B<CLONE_PARENT> were specified in I<flags>."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:871
+#: build/C/man2/clone.2:952
 msgid "Returned by B<clone>()  when a zero value is specified for I<child_stack>."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:881
+#: build/C/man2/clone.2:962
 msgid ""
 "B<CLONE_NEWIPC> was specified in I<flags>, but the kernel was not configured "
 "with the B<CONFIG_SYSVIPC> and B<CONFIG_IPC_NS> options."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:889
+#: build/C/man2/clone.2:970
 msgid ""
 "B<CLONE_NEWNET> was specified in I<flags>, but the kernel was not configured "
 "with the B<CONFIG_NET_NS> option."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:897
+#: build/C/man2/clone.2:978
 msgid ""
 "B<CLONE_NEWPID> was specified in I<flags>, but the kernel was not configured "
 "with the B<CONFIG_PID_NS> option."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:905
+#: build/C/man2/clone.2:986
 msgid ""
 "B<CLONE_NEWUTS> was specified in I<flags>, but the kernel was not configured "
 "with the B<CONFIG_UTS> option."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:905 build/C/man2/setns.2:89 build/C/man2/unshare.2:199
+#: build/C/man2/clone.2:986 build/C/man2/setns.2:179 build/C/man2/unshare.2:296
 #, no-wrap
 msgid "B<ENOMEM>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:910
+#: 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 "
@@ -1618,13 +1780,13 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/clone.2:910 build/C/man2/clone.2:919 build/C/man2/kcmp.2:182 build/C/man2/sched_setaffinity.2:135 build/C/man2/sched_setparam.2:101 build/C/man2/sched_setscheduler.2:438 build/C/man2/setns.2:92 build/C/man2/unshare.2:203
+#: 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<EPERM>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:919
+#: build/C/man2/clone.2:1000
 msgid ""
 "B<CLONE_NEWIPC>, B<CLONE_NEWNET>, B<CLONE_NEWNS>, B<CLONE_NEWPID>, or "
 "B<CLONE_NEWUTS> was specified by an unprivileged process (process without "
@@ -1632,75 +1794,88 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:923
+#: build/C/man2/clone.2:1004
 msgid "B<CLONE_PID> was specified by a process other than process 0."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:930
+#: build/C/man2/clone.2:1012 build/C/man2/unshare.2:311
 msgid ""
-"There is no entry for B<clone>()  in libc5.  glibc2 provides B<clone>()  as "
-"described in this manual page."
+"B<CLONE_NEWUSER> was specified in I<flags>, but either the effective user ID "
+"or the effective group ID of the caller does not have a mapping in the "
+"parent namespace (see B<user_namespaces>(7))."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/clone.2:1012 build/C/man2/unshare.2:311
+#, no-wrap
+msgid "B<EPERM> (since Linux 3.9)"
 msgstr ""
 
+#.  commit 3151527ee007b73a0ebd296010f1c0454a919c7d
+#.  FIXME What is the rationale for this restriction?
 #. type: Plain text
-#: build/C/man2/clone.2:937
+#: build/C/man2/clone.2:1022 build/C/man2/unshare.2:321
 msgid ""
-"The B<clone>()  and B<sys_clone> calls are Linux-specific and should not be "
-"used in programs intended to be portable."
+"B<CLONE_NEWUSER> was specified in I<flags> and the caller is in a chroot "
+"environment (i.e., the caller's root directory does not match the root "
+"directory of the mount namespace in which it resides)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/clone.2:1022 build/C/man2/unshare.2:321
+#, no-wrap
+msgid "B<EUSERS> (since Linux 3.11)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:947
+#: build/C/man2/clone.2:1031 build/C/man2/unshare.2:330
 msgid ""
-"In the kernel 2.4.x series, B<CLONE_THREAD> generally does not make the "
-"parent of the new thread the same as the parent of the calling process.  "
-"However, for kernel versions 2.4.7 to 2.4.18 the B<CLONE_THREAD> flag "
-"implied the B<CLONE_PARENT> flag (as in kernel 2.6)."
+"B<CLONE_NEWUSER> was specified in I<flags>, and the call would cause the "
+"limit on the number of nested user namespaces to be exceeded.  See "
+"B<user_namespaces>(7)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:957
+#: build/C/man2/clone.2:1038
 msgid ""
-"For a while there was B<CLONE_DETACHED> (introduced in 2.5.32): parent wants "
-"no child-exit signal.  In 2.6.2 the need to give this together with "
-"B<CLONE_THREAD> disappeared.  This flag is still defined, but has no effect."
+"There is no entry for B<clone>()  in libc5.  glibc2 provides B<clone>()  as "
+"described in this manual page."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:962
+#: build/C/man2/clone.2:1042
 msgid ""
-"On i386, B<clone>()  should not be called through vsyscall, but directly "
-"through I<int $0x80>."
+"B<clone>()  is Linux-specific and should not be used in programs intended to "
+"be portable."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:964
-msgid "On ia64, a different system call is used:"
+#: build/C/man2/clone.2:1052
+msgid ""
+"In the kernel 2.4.x series, B<CLONE_THREAD> generally does not make the "
+"parent of the new thread the same as the parent of the calling process.  "
+"However, for kernel versions 2.4.7 to 2.4.18 the B<CLONE_THREAD> flag "
+"implied the B<CLONE_PARENT> flag (as in kernel 2.6)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:971
-#, no-wrap
+#: build/C/man2/clone.2:1062
 msgid ""
-"B<int __clone2(int (*>I<fn>B<)(void *), >\n"
-"B<             void *>I<child_stack_base>B<, size_t >I<stack_size>B<,>\n"
-"B<             int >I<flags>B<, void *>I<arg>B<, ... >\n"
-"B<          /* pid_t *>I<ptid>B<, struct user_desc *>I<tls>B<, pid_t "
-"*>I<ctid>B< */ );>\n"
+"For a while there was B<CLONE_DETACHED> (introduced in 2.5.32): parent wants "
+"no child-exit signal.  In 2.6.2 the need to give this together with "
+"B<CLONE_THREAD> disappeared.  This flag is still defined, but has no effect."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:984
+#: build/C/man2/clone.2:1067
 msgid ""
-"The B<__clone2>()  system call operates in the same way as B<clone>(), "
-"except that I<child_stack_base> points to the lowest address of the child's "
-"stack area, and I<stack_size> specifies the size of the stack pointed to by "
-"I<child_stack_base>."
+"On i386, B<clone>()  should not be called through vsyscall, but directly "
+"through I<int $0x80>."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1015
+#: 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<getpid>(2)  that performs caching of PIDs.  "
@@ -1719,31 +1894,25 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1018
+#: build/C/man2/clone.2:1101
 #, no-wrap
 msgid "    #include E<lt>syscall.hE<gt>\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1020
+#: build/C/man2/clone.2:1103
 #, no-wrap
 msgid "    pid_t mypid;\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1022
+#: build/C/man2/clone.2:1105
 #, no-wrap
 msgid "    mypid = syscall(SYS_getpid);\n"
 msgstr ""
 
-#. type: SS
-#: build/C/man2/clone.2:1027
-#, no-wrap
-msgid "Create a child that executes in a separate UTS namespace"
-msgstr ""
-
 #. type: Plain text
-#: build/C/man2/clone.2:1037
+#: build/C/man2/clone.2:1119
 msgid ""
 "The following program demonstrates the use of B<clone>()  to create a child "
 "process that executes in a separate UTS namespace.  The child changes the "
@@ -1753,8 +1922,14 @@ msgid ""
 "program, see B<setns>(2)."
 msgstr ""
 
+#. type: SS
+#: build/C/man2/clone.2:1119 build/C/man2/setns.2:255 build/C/man2/unshare.2:396
+#, no-wrap
+msgid "Program source"
+msgstr ""
+
 #. type: Plain text
-#: build/C/man2/clone.2:1047
+#: build/C/man2/clone.2:1129
 #, no-wrap
 msgid ""
 "#define _GNU_SOURCE\n"
@@ -1768,7 +1943,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1050 build/C/man2/setns.2:177
+#: 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"
@@ -1776,7 +1951,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1055
+#: build/C/man2/clone.2:1137
 #, no-wrap
 msgid ""
 "static int              /* Start function for cloned child */\n"
@@ -1786,13 +1961,13 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1057
+#: build/C/man2/clone.2:1139
 #, no-wrap
 msgid "    /* Change hostname in UTS namespace of child */\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1060
+#: build/C/man2/clone.2:1142
 #, no-wrap
 msgid ""
 "    if (sethostname(arg, strlen(arg)) == -1)\n"
@@ -1800,13 +1975,13 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1062
+#: build/C/man2/clone.2:1144
 #, no-wrap
 msgid "    /* Retrieve and display hostname */\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1066
+#: build/C/man2/clone.2:1148
 #, no-wrap
 msgid ""
 "    if (uname(&uts) == -1)\n"
@@ -1815,7 +1990,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1070
+#: build/C/man2/clone.2:1152
 #, no-wrap
 msgid ""
 "    /* Keep the namespace open for a while, by sleeping.\n"
@@ -1824,13 +1999,13 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1072
+#: build/C/man2/clone.2:1154
 #, no-wrap
 msgid "    sleep(200);\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1075
+#: build/C/man2/clone.2:1157
 #, no-wrap
 msgid ""
 "    return 0;           /* Child terminates now */\n"
@@ -1838,13 +2013,13 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1077
+#: build/C/man2/clone.2:1159
 #, no-wrap
 msgid "#define STACK_SIZE (1024 * 1024)    /* Stack size for cloned child */\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1085
+#: build/C/man2/clone.2:1167
 #, no-wrap
 msgid ""
 "int\n"
@@ -1857,7 +2032,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1090
+#: build/C/man2/clone.2:1172
 #, no-wrap
 msgid ""
 "    if (argc E<lt> 2) {\n"
@@ -1868,13 +2043,13 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1092
+#: build/C/man2/clone.2:1174
 #, no-wrap
 msgid "    /* Allocate stack for child */\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1097
+#: build/C/man2/clone.2:1179
 #, no-wrap
 msgid ""
 "    stack = malloc(STACK_SIZE);\n"
@@ -1884,7 +2059,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1100
+#: build/C/man2/clone.2:1182
 #, no-wrap
 msgid ""
 "    /* Create child that has its own UTS namespace;\n"
@@ -1892,7 +2067,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1105
+#: build/C/man2/clone.2:1187
 #, no-wrap
 msgid ""
 "    pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);\n"
@@ -1902,19 +2077,19 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1107
+#: build/C/man2/clone.2:1189
 #, no-wrap
 msgid "    /* Parent falls through to here */\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1109
+#: build/C/man2/clone.2:1191
 #, no-wrap
 msgid "    sleep(1);           /* Give child time to change its hostname */\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1112
+#: build/C/man2/clone.2:1194
 #, no-wrap
 msgid ""
 "    /* Display hostname in parent\\(aqs UTS namespace. This will be\n"
@@ -1922,7 +2097,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1116
+#: build/C/man2/clone.2:1198
 #, no-wrap
 msgid ""
 "    if (uname(&uts) == -1)\n"
@@ -1931,7 +2106,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1120
+#: build/C/man2/clone.2:1202
 #, no-wrap
 msgid ""
 "    if (waitpid(pid, NULL, 0) == -1)    /* Wait for child */\n"
@@ -1940,7 +2115,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1123
+#: build/C/man2/clone.2:1205
 #, no-wrap
 msgid ""
 "    exit(EXIT_SUCCESS);\n"
@@ -1948,11 +2123,12 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/clone.2:1138
+#: build/C/man2/clone.2:1221
 msgid ""
 "B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), "
 "B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), B<tkill>(2), "
-"B<unshare>(2), B<wait>(2), B<capabilities>(7), B<pthreads>(7)"
+"B<unshare>(2), B<wait>(2), B<capabilities>(7), B<namespaces>(7), "
+"B<pthreads>(7)"
 msgstr ""
 
 #. type: TH
@@ -1964,7 +2140,7 @@ msgstr ""
 #. type: TH
 #: build/C/man2/kcmp.2:28
 #, no-wrap
-msgid "2013-01-27"
+msgid "2013-12-08"
 msgstr ""
 
 #. type: Plain text
@@ -2042,8 +2218,8 @@ msgstr ""
 #. type: Plain text
 #: build/C/man2/kcmp.2:84
 msgid ""
-"Check whether the processes share the same file system information (i.e., "
-"file mode creation mask, working directory, and file system root).  The "
+"Check whether the processes share the same filesystem information (i.e., "
+"file mode creation mask, working directory, and filesystem root).  The "
 "arguments I<idx1> and I<idx2> are ignored."
 msgstr ""
 
@@ -2082,7 +2258,7 @@ msgstr ""
 #. type: Plain text
 #: build/C/man2/kcmp.2:109
 msgid ""
-"Check whether the processes share the same list of System V semaphore undo "
+"Check whether the processes share the same list of System\\ V semaphore undo "
 "operations.  The arguments I<idx1> and I<idx2> are ignored."
 msgstr ""
 
@@ -2100,15 +2276,16 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:124
+#: build/C/man2/kcmp.2:127
 msgid ""
-"Note the B<kcmp>()  is not protected against false positives which may have "
-"place if tasks are running.  Which means one should stop tasks being "
-"inspected with this syscall to obtain meaningful results."
+"Note the B<kcmp>()  is not protected against false positives which may occur "
+"if tasks are running.  One should stop tasks by sending B<SIGSTOP> (see "
+"B<signal>(7))  prior to inspection with this system call to obtain "
+"meaningful results."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:130
+#: build/C/man2/kcmp.2:133
 msgid ""
 "The return value of a successful call to B<kcmp>()  is simply the result of "
 "arithmetic comparison of kernel pointers (when the kernel compares "
@@ -2116,7 +2293,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:138
+#: build/C/man2/kcmp.2:141
 msgid ""
 "The easiest way to explain is to consider an example.  Suppose that I<v1> "
 "and I<v2> are the addresses of appropriate resources, then the return value "
@@ -2124,137 +2301,137 @@ msgid ""
 msgstr ""
 
 #. type: IP
-#: build/C/man2/kcmp.2:139
+#: build/C/man2/kcmp.2:142
 #, no-wrap
 msgid "0"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:144
+#: build/C/man2/kcmp.2:147
 msgid ""
 "I<v1> is equal to I<v2>; in other words, the two processes share the "
 "resource."
 msgstr ""
 
 #. type: IP
-#: build/C/man2/kcmp.2:144
+#: build/C/man2/kcmp.2:147
 #, no-wrap
 msgid "1"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:148
+#: build/C/man2/kcmp.2:151
 msgid "I<v1> is less than I<v2>."
 msgstr ""
 
 #. type: IP
-#: build/C/man2/kcmp.2:148
+#: build/C/man2/kcmp.2:151
 #, no-wrap
 msgid "2"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:152
+#: build/C/man2/kcmp.2:155
 msgid "I<v1> is greater than I<v2>."
 msgstr ""
 
 #. type: IP
-#: build/C/man2/kcmp.2:152
+#: build/C/man2/kcmp.2:155
 #, no-wrap
 msgid "3"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:157
+#: build/C/man2/kcmp.2:160
 msgid "I<v1> is not equal to I<v2>, but ordering information is unavailable."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:162
+#: build/C/man2/kcmp.2:165
 msgid "On error, -1 is returned, and I<errno> is set appropriately."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:167
+#: build/C/man2/kcmp.2:170
 msgid ""
-"B<kcmp ()> was designed to return values suitable for sorting.  This is "
+"B<kcmp>()  was designed to return values suitable for sorting.  This is "
 "particularly handy if one needs to compare a large number of file "
 "descriptors."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/kcmp.2:168 build/C/man2/setns.2:78
+#: build/C/man2/kcmp.2:171 build/C/man2/setns.2:146
 #, no-wrap
 msgid "B<EBADF>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:178
+#: build/C/man2/kcmp.2:181
 msgid "I<type> is B<KCMP_FILE> and I<fd1> or I<fd2> is not an open file descriptor."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:182
+#: build/C/man2/kcmp.2:185
 msgid "I<type> is invalid."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:188
+#: build/C/man2/kcmp.2:191
 msgid ""
 "Insufficient permission to inspect process resources.  The B<CAP_SYS_PTRACE> "
 "capability is required to inspect processes that you do not own."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/kcmp.2:188 build/C/man2/sched_rr_get_interval.2:90 build/C/man2/sched_setaffinity.2:145 build/C/man2/sched_setparam.2:107 build/C/man2/sched_setscheduler.2:441
+#: 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<ESRCH>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:195
+#: build/C/man2/kcmp.2:198
 msgid "Process I<pid1> or I<pid2> does not exist."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:199
+#: build/C/man2/kcmp.2:202
 msgid "The B<kcmp>()  system call first appeared in Linux 3.5."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:202
+#: build/C/man2/kcmp.2:205
 msgid ""
-"B<kcmp>()  is Linux specific and should not be used in programs intended to "
+"B<kcmp>()  is Linux-specific and should not be used in programs intended to "
 "be portable."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:205
+#: build/C/man2/kcmp.2:208
 msgid ""
 "Glibc does not provide a wrapper for this system call; call it using "
 "B<syscall>(2)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:214
+#: build/C/man2/kcmp.2:217
 msgid ""
 "This system call is available only if the kernel was configured with "
 "B<CONFIG_CHECKPOINT_RESTORE>.  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<proc>(5)  file system; this was deemed to be unsuitable for security "
+"B<proc>(5)  filesystem; this was deemed to be unsuitable for security "
 "reasons."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:219
+#: build/C/man2/kcmp.2:222
 msgid ""
 "See B<clone>(2)  for some background information on the shared resources "
 "referred to on this page."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/kcmp.2:222
+#: build/C/man2/kcmp.2:225
 msgid "B<clone>(2), B<unshare>(2)"
 msgstr ""
 
@@ -2267,7 +2444,7 @@ msgstr ""
 #. type: TH
 #: build/C/man2/sched_get_priority_max.2:29
 #, no-wrap
-msgid "2006-03-23"
+msgid "2014-05-12"
 msgstr ""
 
 #. type: Plain text
@@ -2291,19 +2468,19 @@ msgid "B<int sched_get_priority_min(int >I<policy>B<);>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:54
+#: build/C/man2/sched_get_priority_max.2:59
 msgid ""
 "B<sched_get_priority_max>()  returns the maximum priority value that can be "
 "used with the scheduling algorithm identified by I<policy>.  "
 "B<sched_get_priority_min>()  returns the minimum priority value that can be "
 "used with the scheduling algorithm identified by I<policy>.  Supported "
-"I<policy> values are B<SCHED_FIFO>, B<SCHED_RR>, B<SCHED_OTHER>, and "
-"B<SCHED_BATCH>.  Further details about these policies can be found in "
-"B<sched_setscheduler>(2)."
+"I<policy> values are B<SCHED_FIFO>, B<SCHED_RR>, B<SCHED_OTHER>, "
+"B<SCHED_BATCH>, B<SCHED_IDLE>, and B<SCHED_DEADLINE>.  Further details about "
+"these policies can be found in B<sched>(7)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:63
+#: 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 "
@@ -2312,15 +2489,15 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:69
+#: build/C/man2/sched_get_priority_max.2:76
 msgid ""
-"Linux allows the static priority value range 1 to 99 for B<SCHED_FIFO> and "
-"B<SCHED_RR> and the priority 0 for B<SCHED_OTHER> and B<SCHED_BATCH>.  "
+"Linux allows the static priority range 1 to 99 for the B<SCHED_FIFO> and "
+"B<SCHED_RR> policies, and the priority 0 for the remaining policies.  "
 "Scheduling priority ranges for the various policies are not alterable."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:78
+#: 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 "
@@ -2331,7 +2508,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:86
+#: build/C/man2/sched_get_priority_max.2:97
 msgid ""
 "POSIX systems on which B<sched_get_priority_max>()  and "
 "B<sched_get_priority_min>()  are available define "
@@ -2339,7 +2516,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:96
+#: build/C/man2/sched_get_priority_max.2:107
 msgid ""
 "On success, B<sched_get_priority_max>()  and B<sched_get_priority_min>()  "
 "return the maximum/minimum priority value for the named scheduling policy.  "
@@ -2347,27 +2524,21 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:100
+#: build/C/man2/sched_get_priority_max.2:113
 msgid "The argument I<policy> does not identify a defined scheduling policy."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:102 build/C/man2/sched_rr_get_interval.2:96 build/C/man2/sched_setparam.2:112 build/C/man2/sched_yield.2:54
+#: 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 ""
 
 #. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:111
+#: build/C/man2/sched_get_priority_max.2:125
 msgid ""
 "B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), "
-"B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2)"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/sched_get_priority_max.2:114 build/C/man2/sched_rr_get_interval.2:131 build/C/man2/sched_setparam.2:134 build/C/man2/sched_setscheduler.2:563 build/C/man2/sched_yield.2:84
-msgid ""
-"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
-"& Associates, Inc., ISBN 1-56592-074-0."
+"B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
+"B<sched>(7)"
 msgstr ""
 
 #. type: TH
@@ -2379,7 +2550,7 @@ msgstr ""
 #. type: TH
 #: build/C/man3/sched_getcpu.3:26
 #, no-wrap
-msgid "2010-10-31"
+msgid "2014-05-10"
 msgstr ""
 
 #. type: Plain text
@@ -2387,74 +2558,92 @@ msgstr ""
 msgid "sched_getcpu - determine CPU on which the calling thread is running"
 msgstr ""
 
-#.  Really:_BSD_SOURCE || _SVID_SOURCE
 #. type: Plain text
 #: build/C/man3/sched_getcpu.3:34
 #, no-wrap
-msgid ""
-"B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
-"B<#include E<lt>sched.hE<gt>>\n"
+msgid "B<int sched_getcpu(void);>\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:36
-#, no-wrap
-msgid "B<int sched_getcpu(void);>\n"
+#: build/C/man3/sched_getcpu.3:39 build/C/man2/unshare.2:33
+msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/sched_getcpu.3:42
+msgid "B<sched_getcpu>():"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:40
+#: build/C/man3/sched_getcpu.3:58
 msgid ""
 "B<sched_getcpu>()  returns the number of the CPU on which the calling thread "
 "is currently executing."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:47
+#: build/C/man3/sched_getcpu.3:65
 msgid ""
 "On success, B<sched_getcpu>()  returns a nonnegative CPU number.  On error, "
 "-1 is returned and I<errno> is set to indicate the error."
 msgstr ""
 
 #. type: TP
-#: build/C/man3/sched_getcpu.3:48 build/C/man2/sched_rr_get_interval.2:87
+#: build/C/man3/sched_getcpu.3:66 build/C/man2/sched_rr_get_interval.2:87
 #, no-wrap
 msgid "B<ENOSYS>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:52
+#: build/C/man3/sched_getcpu.3:70
 msgid "This kernel does not implement B<getcpu>(2)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:54
+#: build/C/man3/sched_getcpu.3:72
 msgid "This function is available since glibc 2.6."
 msgstr ""
 
+#. 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 ""
+
+#. type: Plain text
+#: build/C/man3/sched_getcpu.3:77
+msgid "The B<sched_getcpu>()  function is thread-safe."
+msgstr ""
+
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:57
-msgid "B<sched_getcpu>()  is glibc specific."
+#: build/C/man3/sched_getcpu.3:80
+msgid "B<sched_getcpu>()  is glibc-specific."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:59
+#: build/C/man3/sched_getcpu.3:82
 msgid "The call"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:63
+#: build/C/man3/sched_getcpu.3:86
 #, no-wrap
 msgid "cpu = sched_getcpu();\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:69
+#: build/C/man3/sched_getcpu.3:92
 msgid "is equivalent to the following B<getcpu>(2)  call:"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:75
+#: build/C/man3/sched_getcpu.3:98
 #, no-wrap
 msgid ""
 "int c, s;\n"
@@ -2463,8 +2652,8 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man3/sched_getcpu.3:79
-msgid "B<getcpu>(2)"
+#: build/C/man3/sched_getcpu.3:103
+msgid "B<getcpu>(2), B<sched>(7)"
 msgstr ""
 
 #. type: TH
@@ -2474,9 +2663,9 @@ msgid "SCHED_RR_GET_INTERVAL"
 msgstr ""
 
 #. type: TH
-#: build/C/man2/sched_rr_get_interval.2:29
+#: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_yield.2:29
 #, no-wrap
-msgid "2011-10-16"
+msgid "2014-04-28"
 msgstr ""
 
 #. type: Plain text
@@ -2574,14 +2763,8 @@ msgid "Linux notes"
 msgstr ""
 
 #.  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:125
+#: 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) "
@@ -2590,13 +2773,29 @@ msgid ""
 "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.  Since Linux 2.6.24, the B<SCHED_RR> "
-"quantum cannot be modified."
+"varied somewhat across kernel versions.  This method of adjusting the "
+"quantum was removed starting with Linux 2.6.24."
+msgstr ""
+
+#.  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:132
+msgid ""
+"Linux 3.9 added a new mechanism for adjusting (and viewing) the B<SCHED_RR> "
+"quantum: the I</proc/sys/kernel/sched_rr_timeslice_ms> 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 ""
 
 #. type: Plain text
-#: build/C/man2/sched_rr_get_interval.2:128 build/C/man2/sched_setaffinity.2:177
-msgid "B<sched_setscheduler>(2)  has a description of the Linux scheduling scheme."
+#: build/C/man2/sched_rr_get_interval.2:134 build/C/man2/sched_yield.2:81
+msgid "B<sched>(7)"
 msgstr ""
 
 #. type: TH
@@ -2608,13 +2807,13 @@ msgstr ""
 #. type: TH
 #: build/C/man2/sched_setaffinity.2:34
 #, no-wrap
-msgid "2013-02-11"
+msgid "2014-12-31"
 msgstr ""
 
 #. type: Plain text
 #: 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 ""
 
@@ -2623,7 +2822,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "B<int sched_setaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
-"B<                      cpu_set_t *>I<mask>B<);>\n"
+"B<                      const cpu_set_t *>I<mask>B<);>\n"
 msgstr ""
 
 #. type: Plain text
@@ -2637,16 +2836,16 @@ msgstr ""
 #. type: Plain text
 #: 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."
+"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 ""
 
 #. type: Plain text
@@ -2660,28 +2859,28 @@ msgstr ""
 #. type: Plain text
 #: build/C/man2/sched_setaffinity.2:85
 msgid ""
-"B<sched_setaffinity>()  sets the CPU affinity mask of the process whose ID "
-"is I<pid> to the value specified by I<mask>.  If I<pid> is zero, then the "
-"calling process is used.  The argument I<cpusetsize> is the length (in "
-"bytes) of the data pointed to by I<mask>.  Normally this argument would be "
+"B<sched_setaffinity>()  sets the CPU affinity mask of the thread whose ID is "
+"I<pid> to the value specified by I<mask>.  If I<pid> is zero, then the "
+"calling thread is used.  The argument I<cpusetsize> is the length (in bytes) "
+"of the data pointed to by I<mask>.  Normally this argument would be "
 "specified as I<sizeof(cpu_set_t)>."
 msgstr ""
 
 #. type: Plain text
 #: build/C/man2/sched_setaffinity.2:92
 msgid ""
-"If the process specified by I<pid> is not currently running on one of the "
-"CPUs specified in I<mask>, then that process is migrated to one of the CPUs "
+"If the thread specified by I<pid> is not currently running on one of the "
+"CPUs specified in I<mask>, then that thread is migrated to one of the CPUs "
 "specified in I<mask>."
 msgstr ""
 
 #. type: Plain text
 #: build/C/man2/sched_setaffinity.2:107
 msgid ""
-"B<sched_getaffinity>()  writes the affinity mask of the process whose ID is "
+"B<sched_getaffinity>()  writes the affinity mask of the thread whose ID is "
 "I<pid> into the I<cpu_set_t> structure pointed to by I<mask>.  The "
 "I<cpusetsize> argument specifies the size (in bytes) of I<mask>.  If I<pid> "
-"is zero, then the mask of the calling process is returned."
+"is zero, then the mask of the calling thread is returned."
 msgstr ""
 
 #. type: Plain text
@@ -2700,7 +2899,7 @@ msgstr ""
 #: build/C/man2/sched_setaffinity.2:128
 msgid ""
 "The affinity bit mask I<mask> 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<cpuset>(7)."
 msgstr ""
@@ -2716,15 +2915,15 @@ msgstr ""
 #. type: Plain text
 #: build/C/man2/sched_setaffinity.2:145
 msgid ""
-"(B<sched_setaffinity>())  The calling process does not have appropriate "
+"(B<sched_setaffinity>())  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<pid>, or it must possess "
+"or effective user ID of the thread identified by I<pid>, or it must possess "
 "the B<CAP_SYS_NICE> capability."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setaffinity.2:148 build/C/man2/sched_setparam.2:110 build/C/man2/sched_setscheduler.2:444
-msgid "The process whose ID is I<pid> could not be found."
+#: 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<pid> could not be found."
 msgstr ""
 
 #. type: Plain text
@@ -2745,19 +2944,34 @@ msgstr ""
 #. type: Plain text
 #: build/C/man2/sched_setaffinity.2:174
 msgid ""
-"After a call to B<sched_setaffinity>(), the set of CPUs on which the process "
+"After a call to B<sched_setaffinity>(), the set of CPUs on which the thread "
 "will actually run is the intersection of the set specified in the I<mask> "
 "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<cpuset>(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 ""
 
 #. type: Plain text
-#: build/C/man2/sched_setaffinity.2:194
+#: 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</proc/cpuinfo>; using "
+"B<syconf>(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</sys/devices/system/cpu/>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setaffinity.2:189
+msgid "B<sched>(7)  has a description of the Linux scheduling scheme."
+msgstr ""
+
+#. 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<gettid>(2)  can be passed in the argument I<pid>.  "
 "Specifying I<pid> as 0 will set the attribute for the calling thread, and "
@@ -2768,18 +2982,18 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setaffinity.2:200
+#: build/C/man2/sched_setaffinity.2:212
 msgid ""
 "A child created via B<fork>(2)  inherits its parent's CPU affinity mask.  "
 "The affinity mask is preserved across an B<execve>(2)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setaffinity.2:214
+#: 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<mask> "
-"being typed as I<unsigned long *>, reflecting the fact that the underlying "
+"being typed as I<unsigned long\\ *>, reflecting the fact that the underlying "
 "implementation of CPU sets is a simple bit mask.  On success, the raw "
 "B<sched_getaffinity>()  system call returns the size (in bytes) of the "
 "I<cpumask_t> data type that is used internally by the kernel to represent "
@@ -2787,36 +3001,519 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setaffinity.2:233
+#: build/C/man2/sched_setaffinity.2:248
 msgid ""
-"B<taskset>(1), B<clone>(2), B<getcpu>(2), B<getpriority>(2), B<gettid>(2), "
-"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
-"B<sched_getscheduler>(2), B<sched_setscheduler>(2), B<setpriority>(2), "
-"B<CPU_SET>(3), B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), "
-"B<capabilities>(7), B<cpuset>(7)"
+"B<lscpu>(1), B<nproc>(1), B<taskset>(1), B<clone>(2), B<getcpu>(2), "
+"B<getpriority>(2), B<gettid>(2), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
+"B<sched_setscheduler>(2), B<setpriority>(2), B<CPU_SET>(3), "
+"B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
+"B<cpuset>(7), B<sched>(7)"
 msgstr ""
 
 #. type: TH
-#: build/C/man2/sched_setparam.2:30
+#: build/C/man2/sched_setattr.2:26
 #, no-wrap
-msgid "SCHED_SETPARAM"
+msgid "SCHED_SETATTR"
 msgstr ""
 
 #. type: TH
-#: build/C/man2/sched_setparam.2:30 build/C/man2/sched_setscheduler.2:46
+#: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setscheduler.2:26 build/C/man7/sched.7:32
 #, no-wrap
-msgid "2013-02-12"
+msgid "2014-10-02"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:33
-msgid "sched_setparam, sched_getparam - set and get scheduling parameters"
+#: build/C/man2/sched_setattr.2:30
+msgid "sched_setattr, sched_getattr - set and get scheduling policy and attributes"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:36 build/C/man2/sched_setscheduler.2:53
+#: build/C/man2/sched_setattr.2:36
 #, no-wrap
-msgid "B<#include E<lt>sched.hE<gt>>\n"
+msgid ""
+"B<int sched_setattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
+"B<                  unsigned int >I<flags>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:39
+#, no-wrap
+msgid ""
+"B<int sched_getattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
+"B<                  unsigned int >I<size>B<, unsigned int >I<flags>B<);>\n"
+msgstr ""
+
+#. type: SS
+#: build/C/man2/sched_setattr.2:42
+#, no-wrap
+msgid "sched_setattr()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:52
+msgid ""
+"The B<sched_setattr>()  system call sets the scheduling policy and "
+"associated attributes for the thread whose ID is specified in I<pid>.  If "
+"I<pid> equals zero, the scheduling policy and attributes of the calling "
+"thread will be set."
+msgstr ""
+
+#. 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<policy>:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:73
+#, no-wrap
+msgid "B<SCHED_OTHER>"
+msgstr ""
+
+#.  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<SCHED_BATCH>"
+msgstr ""
+
+#. 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<SCHED_IDLE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:69 build/C/man2/sched_setscheduler.2:86
+msgid "for running I<very> 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<sched>(7).  The real-time policies that may be "
+"specified in I<policy> are:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:99
+#, no-wrap
+msgid "B<SCHED_FIFO>"
+msgstr ""
+
+#. 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<SCHED_RR>"
+msgstr ""
+
+#. 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 ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:86
+#, no-wrap
+msgid "B<SCHED_DEADLINE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:91
+msgid "a deadline scheduling policy; see B<sched>(7)  for details."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:97
+msgid ""
+"The I<attr> 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 ""
+
+#. 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 ""
+
+#. 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<size>"
+msgstr ""
+
+#. 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<sizeof(struct sched_attr)>.  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<sched_setattr>()  fails "
+"with the error B<E2BIG> and updates I<size> to contain the size of the "
+"kernel structure."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:146
+msgid ""
+"The above behavior when the size of the user-space I<sched_attr> 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<sched_attr> "
+"structure is increased.  In the future, it could also allow applications "
+"that know about a larger user-space I<sched_attr> structure to determine "
+"whether they are running on an older kernel that does not support the larger "
+"structure."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:146
+#, no-wrap
+msgid "I<sched_policy>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:151
+msgid ""
+"This field specifies the scheduling policy, as one of the B<SCHED_*> values "
+"listed above."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:151
+#, no-wrap
+msgid "I<sched_flags>"
+msgstr ""
+
+#. 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<SCHED_FLAG_RESET_ON_FORK>.  As a result of "
+"including this flag, children created by B<fork>(2)  do not inherit "
+"privileged scheduling policies.  See B<sched>(7)  for details."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:162
+#, no-wrap
+msgid "I<sched_nice>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:173
+msgid ""
+"This field specifies the nice value to be set when specifying "
+"I<sched_policy> as B<SCHED_OTHER> or B<SCHED_BATCH>.  The nice value is a "
+"number in the range -20 (high priority)  to +19 (low priority); see "
+"B<setpriority>(2)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:173
+#, no-wrap
+msgid "I<sched_priority>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:186
+msgid ""
+"This field specifies the static priority to be set when specifying "
+"I<sched_policy> as B<SCHED_FIFO> or B<SCHED_RR>.  The allowed range of "
+"priorities for these policies can be determined using "
+"B<sched_get_priority_min>(2)  and B<sched_get_priority_max>(2).  For other "
+"policies, this field must be specified as 0."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:186
+#, no-wrap
+msgid "I<sched_runtime>"
+msgstr ""
+
+#. 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<SCHED_DEADLINE> scheduling; for further details, see "
+"B<sched>(7)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:195
+#, no-wrap
+msgid "I<sched_deadline>"
+msgstr ""
+
+#. 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 ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:199
+#, no-wrap
+msgid "I<sched_period>"
+msgstr ""
+
+#. 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 ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:210 build/C/man2/sched_setattr.2:262
+msgid ""
+"The I<flags> argument is provided to allow for future extensions to the "
+"interface; in the current implementation it must be specified as 0."
+msgstr ""
+
+#. type: SS
+#: build/C/man2/sched_setattr.2:210
+#, no-wrap
+msgid "sched_getattr()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:221
+msgid ""
+"The B<sched_getattr>()  system call fetches the scheduling policy and the "
+"associated attributes for the thread whose ID is specified in I<pid>.  If "
+"I<pid> equals zero, the scheduling policy and attributes of the calling "
+"thread will be retrieved."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:231
+msgid ""
+"The I<size> argument should be set to the size of the I<sched_attr> "
+"structure as known to user space.  The value must be at least as large as "
+"the size of the initially published I<sched_attr> structure, or the call "
+"fails with the error B<EINVAL>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:241
+msgid ""
+"The retrieved scheduling attributes are placed in the fields of the "
+"I<sched_attr> structure pointed to by I<attr>.  The kernel sets I<attr.size> "
+"to the size of its I<sched_attr> structure."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:257
+msgid ""
+"If the caller-provided I<attr> buffer is larger than the kernel's "
+"I<sched_attr> structure, the additional bytes in the user-space structure "
+"are not touched.  If the caller-provided structure is smaller than the "
+"kernel I<sched_attr> structure and the kernel needs to return values outside "
+"the provided space, B<sched_getattr>()  fails with the error B<E2BIG>.  As "
+"with B<sched_setattr>(), these semantics allow for future extensibility of "
+"the interface."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:271
+msgid ""
+"On success, B<sched_setattr>()  and B<sched_getattr>()  return 0.  On error, "
+"-1 is returned, and I<errno> is set to indicate the cause of the error."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:276
+msgid ""
+"B<sched_getattr>()  and B<sched_setattr>()  can both fail for the following "
+"reasons:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:284
+msgid "I<attr> is NULL; or I<pid> is negative; or I<flags> is not zero."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:293
+msgid "In addition, B<sched_getattr>()  can fail for the following reasons:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:293 build/C/man2/sched_setattr.2:310
+#, no-wrap
+msgid "B<E2BIG>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:300
+msgid "The buffer specified by I<size> and I<attr> is too small."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:306
+msgid ""
+"I<size> is invalid; that is, it is smaller than the initial version of the "
+"I<sched_attr> structure (48 bytes) or larger than the system page size."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:310
+msgid "In addition, B<sched_setattr>()  can fail for the following reasons:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:318
+msgid ""
+"The buffer specified by I<size> and I<attr> is larger than the kernel "
+"structure, and one or more of the excess bytes is nonzero."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:318
+#, no-wrap
+msgid "B<EBUSY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:323
+msgid "B<SCHED_DEADLINE> admission control failure, see B<sched>(7)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:339
+msgid ""
+"I<attr.sched_policy> is not one of the recognized policies; "
+"I<attr.sched_flags> contains a flag other than B<SCHED_FLAG_RESET_ON_FORK>; "
+"or I<attr.sched_priority> is invalid; or I<attr.sched_policy> is "
+"B<SCHED_DEADLINE> and the deadline scheduling parameters in I<attr> are "
+"invalid."
+msgstr ""
+
+#. 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<sched_setaffinity>(2))."
+msgstr ""
+
+#.  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 ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:353
+msgid "These system calls are nonstandard Linux extensions."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:369
+msgid ""
+"B<sched_setattr>()  provides a superset of the functionality of "
+"B<sched_setscheduler>(2), B<sched_setparam>(2), B<nice>(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<setpriority>(2).  "
+"Analogously, B<sched_getattr>()  provides a superset of the functionality of "
+"B<sched_getscheduler>(2), B<sched_getparam>(2), and (partially)  "
+"B<getpriority>(2)."
+msgstr ""
+
+#.  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<sched_settattr>()  failed with the error "
+"B<EFAULT> instead of B<E2BIG> for the case described in ERRORS."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:407
+msgid ""
+"B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getaffinity>(2), "
+"B<sched_getscheduler>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
+"B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
+"B<sched_yield>(2), B<setpriority>(2), B<pthread_getschedparam>(3), "
+"B<pthread_setschedparam>(3), B<pthread_setschedprio>(3), B<capabilities>(7), "
+"B<cpuset>(7), B<sched>(7)"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/sched_setparam.2:30
+#, no-wrap
+msgid "SCHED_SETPARAM"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/sched_setparam.2:30
+#, no-wrap
+msgid "2014-05-11"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:33
+msgid "sched_setparam, sched_getparam - set and get scheduling parameters"
 msgstr ""
 
 #. type: Plain text
@@ -2828,252 +3525,560 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:40
-#, no-wrap
-msgid "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
+#: build/C/man2/sched_setparam.2:40
+#, no-wrap
+msgid "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:46
+#, no-wrap
+msgid ""
+"B<struct sched_param {\n"
+"    ...\n"
+"    int >I<sched_priority>B<;\n"
+"    ...\n"
+"};>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:60
+msgid ""
+"B<sched_setparam>()  sets the scheduling parameters associated with the "
+"scheduling policy for the process identified by I<pid>.  If I<pid> is zero, "
+"then the parameters of the calling process are set.  The interpretation of "
+"the argument I<param> depends on the scheduling policy of the process "
+"identified by I<pid>.  See B<sched>(7)  for a description of the scheduling "
+"policies supported under Linux."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:66
+msgid ""
+"B<sched_getparam>()  retrieves the scheduling parameters for the process "
+"identified by I<pid>.  If I<pid> is zero, then the parameters of the calling "
+"process are retrieved."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:75
+msgid ""
+"B<sched_setparam>()  checks the validity of I<param> for the scheduling "
+"policy of the thread.  The value I<param-E<gt>sched_priority> must lie "
+"within the range given by B<sched_get_priority_min>(2)  and "
+"B<sched_get_priority_max>(2)."
+msgstr ""
+
+#. type: Plain text
+#: 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<sched>(7)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:87
+msgid ""
+"POSIX systems on which B<sched_setparam>()  and B<sched_getparam>()  are "
+"available define B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:96
+msgid ""
+"On success, B<sched_setparam>()  and B<sched_getparam>()  return 0.  On "
+"error, -1 is returned, and I<errno> is set appropriately."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:104
+msgid "Invalid arguments: I<param> is NULL or I<pid> is negative"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:109
+msgid ""
+"(B<sched_setparam>())  The argument I<param> does not make sense for the "
+"current scheduling policy."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:116
+msgid ""
+"(B<sched_setparam>())  The calling process does not have appropriate "
+"privileges (Linux: does not have the B<CAP_SYS_NICE> capability)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:119
+msgid "The process whose ID is I<pid> could not be found."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:127
+msgid ""
+"Scheduling parameters are in fact per-thread attributes on Linux; see "
+"B<sched>(7)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:142
+msgid ""
+"B<getpriority>(2), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getaffinity>(2), "
+"B<sched_getscheduler>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
+"B<sched_setattr>(2), B<setpriority>(2), B<capabilities>(7), B<sched>(7)"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/sched_setscheduler.2:26
+#, no-wrap
+msgid "SCHED_SETSCHEDULER"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:30
+msgid ""
+"sched_setscheduler, sched_getscheduler - set and get scheduling "
+"policy/parameters"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:35
+#, no-wrap
+msgid "B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:37
+#, no-wrap
+msgid "B<                       const struct sched_param *>I<param>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:39
+#, no-wrap
+msgid "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:49
+msgid ""
+"The B<sched_setscheduler>()  system call sets both the scheduling policy and "
+"parameters for the thread whose ID is specified in I<pid>.  If I<pid> equals "
+"zero, the scheduling policy and parameters of the calling thread will be "
+"set."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:53
+msgid ""
+"The scheduling parameters are specified in the I<param> argument, which is a "
+"pointer to a structure of the following form:"
+msgstr ""
+
+#. 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 ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:69
+msgid ""
+"In the current implementation, the structure contains only one field, "
+"I<sched_priority>.  The interpretation of I<param> depends on the selected "
+"policy."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:90
+msgid "For each of the above policies, I<param-E<gt>sched_priority> must be 0."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:116
+msgid ""
+"For each of the above policies, I<param-E<gt>sched_priority> specifies a "
+"scheduling priority for the thread.  This is a number in the range returned "
+"by calling B<sched_get_priority_min>(2)  and B<sched_get_priority_max>(2)  "
+"with the specified I<policy>.  On Linux, these system calls return, "
+"respectively, 1 and 99."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:129
+msgid ""
+"Since Linux 2.6.32, the B<SCHED_RESET_ON_FORK> flag can be ORed in I<policy> "
+"when calling B<sched_setscheduler>().  As a result of including this flag, "
+"children created by B<fork>(2)  do not inherit privileged scheduling "
+"policies.  See B<sched>(7)  for details."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:135
+msgid ""
+"B<sched_getscheduler>()  returns the current scheduling policy of the thread "
+"identified by I<pid>.  If I<pid> equals zero, the policy of the calling "
+"thread will be retrieved."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:145
+msgid ""
+"On success, B<sched_setscheduler>()  returns zero.  On success, "
+"B<sched_getscheduler>()  returns the policy for the thread (a nonnegative "
+"integer).  On error, both calls return -1, and I<errno> is set "
+"appropriately."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:153
+msgid "Invalid arguments: I<pid> is negative or I<param> is NULL."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:158
+msgid "(B<sched_setscheduler>())  I<policy> is not one of the recognized policies."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:164
+msgid ""
+"(B<sched_setscheduler>())  I<param> does not make sense for the specified "
+"I<policy>."
+msgstr ""
+
+#. 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<SCHED_BATCH> and B<SCHED_IDLE> "
+"policies are Linux-specific."
+msgstr ""
+
+#. 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<sched>(7)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:185
+msgid ""
+"POSIX systems on which B<sched_setscheduler>()  and B<sched_getscheduler>()  "
+"are available define B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
+msgstr ""
+
+#. 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<sched_setscheduler>(), 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 ""
+
+#. 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<gettid>(2)  can be passed in the "
+"argument I<pid>.  Specifying I<pid> as 0 will operate on the attributes of "
+"the calling thread, and passing the value returned from a call to "
+"B<getpid>(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<pthread_setschedparam>(3), B<pthread_getschedparam>(3), and "
+"B<pthread_setschedprio>(3), instead of the B<sched_*>(2)  system calls.)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:222
+msgid ""
+"POSIX says that on success, B<sched_setscheduler>()  should return the "
+"previous scheduling policy.  Linux B<sched_setscheduler>()  does not conform "
+"to this requirement, since it always returns 0 on success."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:241
+msgid ""
+"B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getattr>(2), "
+"B<sched_getparam>(2), B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
+"B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
+"B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/sched_yield.2:29
+#, no-wrap
+msgid "SCHED_YIELD"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/sched_yield.2:32
+msgid "sched_yield - yield the processor"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:46 build/C/man2/sched_setscheduler.2:65
-#, no-wrap
-msgid ""
-"B<struct sched_param {\n"
-"    ...\n"
-"    int >I<sched_priority>B<;\n"
-"    ...\n"
-"};>\n"
+#: build/C/man2/sched_yield.2:36
+msgid "B<int sched_yield(void);>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:60
+#: build/C/man2/sched_yield.2:41
 msgid ""
-"B<sched_setparam>()  sets the scheduling parameters associated with the "
-"scheduling policy for the process identified by I<pid>.  If I<pid> is zero, "
-"then the parameters of the calling process are set.  The interpretation of "
-"the argument I<param> depends on the scheduling policy of the process "
-"identified by I<pid>.  See B<sched_setscheduler>(2)  for a description of "
-"the scheduling policies supported under Linux."
+"B<sched_yield>()  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 ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:66
+#: build/C/man2/sched_yield.2:48
 msgid ""
-"B<sched_getparam>()  retrieves the scheduling parameters for the process "
-"identified by I<pid>.  If I<pid> is zero, then the parameters of the calling "
-"process are retrieved."
+"On success, B<sched_yield>()  returns 0.  On error, -1 is returned, and "
+"I<errno> is set appropriately."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:75
-msgid ""
-"B<sched_setparam>()  checks the validity of I<param> for the scheduling "
-"policy of the process.  The value I<param-E<gt>sched_priority> must lie "
-"within the range given by B<sched_get_priority_min>(2)  and "
-"B<sched_get_priority_max>(2)."
+#: build/C/man2/sched_yield.2:52
+msgid "In the Linux implementation, B<sched_yield>()  always succeeds."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:79
+#: build/C/man2/sched_yield.2:59
 msgid ""
-"For a discussion of the privileges and resource limits related to scheduling "
-"priority and policy, see B<sched_setscheduler>(2)."
+"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<sched_yield>()."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:87
+#: build/C/man2/sched_yield.2:66
 msgid ""
-"POSIX systems on which B<sched_setparam>()  and B<sched_getparam>()  are "
-"available define B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
+"POSIX systems on which B<sched_yield>()  is available define "
+"B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:96
+#: build/C/man2/sched_yield.2:79
 msgid ""
-"On success, B<sched_setparam>()  and B<sched_getparam>()  return 0.  On "
-"error, -1 is returned, and I<errno> is set appropriately."
+"Strategic calls to B<sched_yield>()  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<sched_yield>()  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 ""
 
-#. type: Plain text
-#: build/C/man2/sched_setparam.2:101
-msgid "The argument I<param> does not make sense for the current scheduling policy."
+#. type: TH
+#: build/C/man7/sched.7:32
+#, no-wrap
+msgid "SCHED"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:107
-msgid ""
-"The calling process does not have appropriate privileges (Linux: does not "
-"have the B<CAP_SYS_NICE> capability)."
+#: build/C/man7/sched.7:35
+msgid "sched - overview of scheduling APIs"
 msgstr ""
 
-#. type: Plain text
-#: build/C/man2/sched_setparam.2:118
-msgid ""
-"Scheduling parameters are in fact per-thread attributes on Linux; see "
-"B<sched_setscheduler>(2)."
+#. type: SS
+#: build/C/man7/sched.7:36
+#, no-wrap
+msgid "API summary"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setparam.2:131
-msgid ""
-"B<getpriority>(2), B<nice>(2), B<sched_get_priority_max>(2), "
-"B<sched_get_priority_min>(2), B<sched_getaffinity>(2), "
-"B<sched_getscheduler>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
-"B<setpriority>(2), B<capabilities>(7)"
+#: build/C/man7/sched.7:38
+msgid "The Linux scheduling APIs are as follows:"
 msgstr ""
 
-#. type: TH
-#: build/C/man2/sched_setscheduler.2:46
+#. type: TP
+#: build/C/man7/sched.7:38
 #, no-wrap
-msgid "SCHED_SETSCHEDULER"
+msgid "B<sched_setscheduler>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:50
-msgid ""
-"sched_setscheduler, sched_getscheduler - set and get scheduling "
-"policy/parameters"
+#: build/C/man7/sched.7:41
+msgid "Set the scheduling policy and parameters of a specified thread."
 msgstr ""
 
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:55
+#. type: TP
+#: build/C/man7/sched.7:41
 #, no-wrap
-msgid "B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
+msgid "B<sched_getscheduler>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:57
+#: build/C/man7/sched.7:44
+msgid "Return the scheduling policy of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:44
 #, no-wrap
-msgid "B<                       const struct sched_param *>I<param>B<);>\n"
+msgid "B<sched_setparam>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:59
+#: 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<int sched_getscheduler(pid_t >I<pid>B<);>\n"
+msgid "B<sched_getparam>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:76
-msgid ""
-"B<sched_setscheduler>()  sets both the scheduling policy and the associated "
-"parameters for the process whose ID is specified in I<pid>.  If I<pid> "
-"equals zero, the scheduling policy and parameters of the calling process "
-"will be set.  The interpretation of the argument I<param> depends on the "
-"selected policy.  Currently, Linux supports the following \"normal\" (i.e., "
-"non-real-time) scheduling policies:"
+#: build/C/man7/sched.7:50
+msgid "Fetch the scheduling parameters of a specified thread."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/sched_setscheduler.2:76
+#: build/C/man7/sched.7:50
 #, no-wrap
-msgid "B<SCHED_OTHER>"
+msgid "B<sched_get_priority_max>(2)"
 msgstr ""
 
-#.  In the 2.6 kernel sources, SCHED_OTHER is actually called
-#.  SCHED_NORMAL.
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:81
-msgid "the standard round-robin time-sharing policy;"
+#: build/C/man7/sched.7:53
+msgid "Return the minimum priority available in a specified scheduling policy."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/sched_setscheduler.2:81
+#: build/C/man7/sched.7:53
 #, no-wrap
-msgid "B<SCHED_BATCH>"
+msgid "B<sched_get_priority_min>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:84
-msgid "for \"batch\" style execution of processes; and"
+#: build/C/man7/sched.7:56
+msgid "Return the maximum priority available in a specified scheduling policy."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/sched_setscheduler.2:84
+#: build/C/man7/sched.7:56
 #, no-wrap
-msgid "B<SCHED_IDLE>"
+msgid "B<sched_rr_get_interval>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:89
-msgid "for running I<very> low priority background jobs."
+#: build/C/man7/sched.7:60
+msgid ""
+"Fetch the quantum used for threads that are scheduled under the "
+"\"round-robin\" scheduling policy."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:60
+#, no-wrap
+msgid "B<sched_yield>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:93
+#: build/C/man7/sched.7:64
 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:"
+"Cause the caller to relinquish the CPU, so that some other thread be "
+"executed."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/sched_setscheduler.2:93
+#: build/C/man7/sched.7:64
 #, no-wrap
-msgid "B<SCHED_FIFO>"
+msgid "B<sched_setaffinity>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:96
-msgid "a first-in, first-out policy; and"
+#: build/C/man7/sched.7:68
+msgid "(Linux-specific)  Set the CPU affinity of a specified thread."
 msgstr ""
 
 #. type: TP
-#: build/C/man2/sched_setscheduler.2:96
+#: build/C/man7/sched.7:68
 #, no-wrap
-msgid "B<SCHED_RR>"
+msgid "B<sched_getaffinity>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:99
-msgid "a round-robin policy."
+#: build/C/man7/sched.7:72
+msgid "(Linux-specific)  Get the CPU affinity of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:72
+#, no-wrap
+msgid "B<sched_setattr>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:101
-msgid "The semantics of each of these policies are detailed below."
+#: build/C/man7/sched.7:79
+msgid ""
+"Set the scheduling policy and parameters of a specified thread.  This "
+"(Linux-specific) system call provides a superset of the functionality of "
+"B<sched_setscheduler>(2)  and B<sched_setparam>(2)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:79
+#, no-wrap
+msgid "B<sched_getattr>(2)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:108
+#: build/C/man7/sched.7:87
 msgid ""
-"B<sched_getscheduler>()  queries the scheduling policy currently applied to "
-"the process identified by I<pid>.  If I<pid> 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<sched_getscheduler>(2)  and B<sched_getparam>(2)."
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:108
+#: build/C/man7/sched.7:87
 #, no-wrap
 msgid "Scheduling policies"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:117
+#: 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<static> scheduling priority, I<sched_priority>; these are the "
-"settings that are modified by B<sched_setscheduler>().  The scheduler makes "
-"it decisions based on knowledge of the scheduling policy and static priority "
-"of all 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<static> scheduling priority, I<sched_priority>.  The "
+"scheduler makes its decisions based on knowledge of the scheduling policy "
+"and static priority of all threads on the system."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:122
+#: 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<SCHED_OTHER>, B<SCHED_IDLE>, B<SCHED_BATCH>), I<sched_priority> is not "
 "used in scheduling decisions (it must be specified as 0)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:136
+#: build/C/man7/sched.7:114
 msgid ""
 "Processes scheduled under one of the real-time policies (B<SCHED_FIFO>, "
 "B<SCHED_RR>) have a I<sched_priority> value in the range 1 (low) to 99 "
-"(high).  (As the numbers imply, real-time 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 "
+"(high).  (As the numbers imply, real-time threads always have higher "
+"priority than normal threads.)  Note well: POSIX.1-2001 requires an "
+"implementation to support only a minimum 32 distinct priority levels for the "
 "real-time policies, and some systems supply just this minimum.  Portable "
 "programs should use B<sched_get_priority_min>(2)  and "
 "B<sched_get_priority_max>(2)  to find the range of priorities supported for "
@@ -3081,103 +4086,104 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:142
+#: build/C/man7/sched.7:120
 msgid ""
-"Conceptually, the scheduler maintains a list of runnable processes for each "
-"possible I<sched_priority> value.  In order to determine which process runs "
+"Conceptually, the scheduler maintains a list of runnable threads for each "
+"possible I<sched_priority> value.  In order to determine which thread runs "
 "next, the scheduler looks for the nonempty list with the highest static "
-"priority and selects the process at the head of this list."
+"priority and selects the thread at the head of this list."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:146
+#: 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:154
+#: 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 ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:154
+#: build/C/man7/sched.7:132
 #, no-wrap
 msgid "SCHED_FIFO: First in-first out scheduling"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:163
+#: build/C/man7/sched.7:141
 msgid ""
-"B<SCHED_FIFO> can only be used with static priorities higher than 0, which "
-"means that when a B<SCHED_FIFO> processes becomes runnable, it will always "
+"B<SCHED_FIFO> can be used only with static priorities higher than 0, which "
+"means that when a B<SCHED_FIFO> threads becomes runnable, it will always "
 "immediately preempt any currently running B<SCHED_OTHER>, B<SCHED_BATCH>, or "
-"B<SCHED_IDLE> process.  B<SCHED_FIFO> is a simple scheduling algorithm "
-"without time slicing.  For processes scheduled under the B<SCHED_FIFO> "
-"policy, the following rules apply:"
+"B<SCHED_IDLE> thread.  B<SCHED_FIFO> is a simple scheduling algorithm "
+"without time slicing.  For threads scheduled under the B<SCHED_FIFO> policy, "
+"the following rules apply:"
 msgstr ""
 
 #. type: IP
-#: build/C/man2/sched_setscheduler.2:163 build/C/man2/sched_setscheduler.2:168 build/C/man2/sched_setscheduler.2:171 build/C/man2/sched_setscheduler.2:185 build/C/man2/sched_setscheduler.2:287 build/C/man2/sched_setscheduler.2:295 build/C/man2/sched_setscheduler.2:336 build/C/man2/sched_setscheduler.2:344 build/C/man2/sched_setscheduler.2:349 build/C/man2/sched_setscheduler.2:354
+#: 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:168
+#: build/C/man7/sched.7:146
 msgid ""
-"A B<SCHED_FIFO> process that has been preempted by another process of higher "
+"A B<SCHED_FIFO> thread that has been preempted by another thread of higher "
 "priority will stay at the head of the list for its priority and will resume "
-"execution as soon as all processes of higher priority are blocked again."
+"execution as soon as all threads of higher priority are blocked again."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:171
+#: build/C/man7/sched.7:149
 msgid ""
-"When a B<SCHED_FIFO> process becomes runnable, it will be inserted at the "
-"end of the list for its priority."
+"When a B<SCHED_FIFO> thread becomes runnable, it will be inserted at the end "
+"of the list for its priority."
 msgstr ""
 
-#.  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:185
+#: build/C/man7/sched.7:164
 msgid ""
-"A call to B<sched_setscheduler>()  or B<sched_setparam>(2)  will put the "
-"B<SCHED_FIFO> (or B<SCHED_RR>) process identified by I<pid> 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<sched_setscheduler>(2), B<sched_setparam>(2), or "
+"B<sched_setattr>(2)  will put the B<SCHED_FIFO> (or B<SCHED_RR>) thread "
+"identified by I<pid> at the start of the list if it was runnable.  As a "
+"consequence, it may preempt the currently running thread if it has the same "
+"priority.  (POSIX.1-2001 specifies that the thread should go to the end of "
+"the list.)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:189
-msgid "A process calling B<sched_yield>(2)  will be put at the end of the list."
+#: build/C/man7/sched.7:168
+msgid "A thread calling B<sched_yield>(2)  will be put at the end of the list."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:193
+#: build/C/man7/sched.7:172
 msgid ""
-"No other events will move a process scheduled under the B<SCHED_FIFO> policy "
-"in the wait list of runnable processes with equal static priority."
+"No other events will move a thread scheduled under the B<SCHED_FIFO> policy "
+"in the wait list of runnable threads with equal static priority."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:198
+#: build/C/man7/sched.7:177
 msgid ""
-"A B<SCHED_FIFO> process runs until either it is blocked by an I/O request, "
-"it is preempted by a higher priority process, or it calls B<sched_yield>(2)."
+"A B<SCHED_FIFO> thread runs until either it is blocked by an I/O request, it "
+"is preempted by a higher priority thread, or it calls B<sched_yield>(2)."
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:198
+#: build/C/man7/sched.7:177
 #, no-wrap
 msgid "SCHED_RR: Round-robin scheduling"
 msgstr ""
@@ -3185,61 +4191,229 @@ msgstr ""
 #.  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:217
+#: build/C/man7/sched.7:196
 msgid ""
 "B<SCHED_RR> is a simple enhancement of B<SCHED_FIFO>.  Everything described "
-"above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except that each "
-"process is only allowed to run for a maximum time quantum.  If a B<SCHED_RR> "
-"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<SCHED_RR> 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<sched_rr_get_interval>(2)."
+"above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except that each thread "
+"is allowed to run only for a maximum time quantum.  If a B<SCHED_RR> thread "
+"has been running for a time period equal to or longer than the time quantum, "
+"it will be put at the end of the list for its priority.  A B<SCHED_RR> "
+"thread that has been preempted by a higher priority thread and subsequently "
+"resumes execution as a running thread will complete the unexpired portion of "
+"its round-robin time quantum.  The length of the time quantum can be "
+"retrieved using B<sched_rr_get_interval>(2)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:196
+#, no-wrap
+msgid "SCHED_DEADLINE: Sporadic task model deadline scheduling"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:208
+msgid ""
+"Since version 3.14, Linux provides a deadline scheduling policy "
+"(B<SCHED_DEADLINE>).  This policy is currently implemented using GEDF "
+"(Global Earliest Deadline First)  in conjunction with CBS (Constant "
+"Bandwidth Server).  To set and fetch this policy and associated attributes, "
+"one must use the Linux-specific B<sched_setattr>(2)  and B<sched_getattr>(2)  "
+"system calls."
+msgstr ""
+
+#. 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<relative "
+"deadline>, before which it should finish execution, and a I<computation "
+"time>, which is the CPU time necessary for executing the job.  The moment "
+"when a task wakes up because a new job has to be executed is called the "
+"I<arrival time> (also referred to as the request time or release time).  The "
+"I<start time> is the time at which a task starts its execution.  The "
+"I<absolute deadline> is thus obtained by adding the relative deadline to the "
+"arrival time."
+msgstr ""
+
+#. 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<lt>- comp. time -E<gt>|\n"
+"     |E<lt>------- relative deadline ------E<gt>|\n"
+"     |E<lt>-------------- period -------------------E<gt>|\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:258
+msgid ""
+"When setting a B<SCHED_DEADLINE> policy for a thread using "
+"B<sched_setattr>(2), one can specify three parameters: I<Runtime>, "
+"I<Deadline>, and I<Period>.  These parameters do not necessarily correspond "
+"to the aforementioned terms: usual practice is to set Runtime to something "
+"bigger than the average computation time (or worst-case execution time for "
+"hard real-time tasks), Deadline to the relative deadline, and Period to the "
+"period of the task.  Thus, for B<SCHED_DEADLINE> scheduling, we have:"
+msgstr ""
+
+#. 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<lt>-- Runtime -------E<gt>|\n"
+"     |E<lt>----------- Deadline -----------E<gt>|\n"
+"     |E<lt>-------------- Period -------------------E<gt>|\n"
+msgstr ""
+
+#.  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<sched_runtime>, "
+"I<sched_deadline>, and I<sched_period> fields of the I<sched_attr> "
+"structure; see B<sched_setattr>(2).  These fields express value in "
+"nanoseconds.  If I<sched_period> is specified as 0, then it is made the same "
+"as I<sched_deadline>."
+msgstr ""
+
+#. 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<lt>= sched_deadline E<lt>= sched_period\n"
+msgstr ""
+
+#.  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<sched_setattr>(2)  fails with the error B<EINVAL>."
+msgstr ""
+
+#. 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 ""
+
+#. 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<SCHED_DEADLINE> threads is not feasible (schedulable) "
+"within the given constraints.  The kernel thus performs an admittance test "
+"when setting or changing B<SCHED_DEADLINE> policy and attributes.  This "
+"admission test calculates whether the change is feasible; if it is not "
+"B<sched_setattr>(2)  fails with the error B<EBUSY>."
+msgstr ""
+
+#. 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 ""
+
+#. 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<SCHED_DEADLINE> policy, B<SCHED_DEADLINE> threads are the highest "
+"priority (user controllable) threads in the system; if any B<SCHED_DEADLINE> "
+"thread is runnable, it will preempt any thread scheduled under one of the "
+"other policies."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:344
+msgid ""
+"A call to B<fork>(2)  by a thread scheduled under the B<SCHED_DEADLINE> "
+"policy will fail with the error B<EAGAIN>, unless the thread has its "
+"reset-on-fork flag set (see below)."
+msgstr ""
+
+#
+#.  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<SCHED_DEADLINE> thread that calls B<sched_yield>(2)  will yield the "
+"current job and wait for a new period to begin."
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:217
+#: build/C/man7/sched.7:355
 #, no-wrap
 msgid "SCHED_OTHER: Default Linux time-sharing scheduling"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:233
+#: build/C/man7/sched.7:372
 msgid ""
-"B<SCHED_OTHER> can only be used at static priority 0.  B<SCHED_OTHER> 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<SCHED_OTHER> can be used at only static priority 0.  B<SCHED_OTHER> is the "
+"standard Linux time-sharing scheduler that is intended for all threads that "
+"do not require the special real-time mechanisms.  The thread to run is "
 "chosen from the static priority 0 list based on a I<dynamic> priority that "
 "is determined only inside this list.  The dynamic priority is based on the "
-"nice value (set by B<nice>(2)  or B<setpriority>(2))  and increased for each "
-"time quantum the process is ready to run, but denied to run by the "
-"scheduler.  This ensures fair progress among all B<SCHED_OTHER> processes."
+"nice value (set by B<nice>(2), B<setpriority>(2), or B<sched_setattr>(2))  "
+"and increased for each time quantum the thread is ready to run, but denied "
+"to run by the scheduler.  This ensures fair progress among all "
+"B<SCHED_OTHER> threads."
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:233
+#: build/C/man7/sched.7:372
 #, no-wrap
 msgid "SCHED_BATCH: Scheduling batch processes"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:245
+#: build/C/man7/sched.7:384
 msgid ""
-"(Since Linux 2.6.16.)  B<SCHED_BATCH> can only be used at static priority "
-"0.  This policy is similar to B<SCHED_OTHER> 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<SCHED_BATCH> can be used only at static priority "
+"0.  This policy is similar to B<SCHED_OTHER> in that it schedules the thread "
+"according to its dynamic priority (based on the nice value).  The difference "
+"is that this policy will cause the scheduler to always assume that the "
+"thread is CPU-intensive.  Consequently, the scheduler will apply a small "
+"scheduling penalty with respect to wakeup behavior, so that this thread is "
+"mildly disfavored in scheduling decisions."
 msgstr ""
 
 #.  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:254
+#: 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 "
@@ -3248,20 +4422,20 @@ msgid ""
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:254
+#: build/C/man7/sched.7:394
 #, no-wrap
 msgid "SCHED_IDLE: Scheduling very low priority jobs"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:258
+#: build/C/man7/sched.7:398
 msgid ""
-"(Since Linux 2.6.23.)  B<SCHED_IDLE> can only be used at static priority 0; "
+"(Since Linux 2.6.23.)  B<SCHED_IDLE> can be used only at static priority 0; "
 "the process nice value has no influence for this policy."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:266
+#: build/C/man7/sched.7:406
 msgid ""
 "This policy is intended for running jobs at extremely low priority (lower "
 "even than a +19 nice value with the B<SCHED_OTHER> or B<SCHED_BATCH> "
@@ -3269,239 +4443,266 @@ msgid ""
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:266
+#: build/C/man7/sched.7:406
 #, no-wrap
 msgid "Resetting scheduling policy for child processes"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:282
+#: build/C/man7/sched.7:412
 msgid ""
-"Since Linux 2.6.32, the B<SCHED_RESET_ON_FORK> flag can be ORed in I<policy> "
-"when calling B<sched_setscheduler>().  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<fork>(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<RLIMIT_RTTIME> resource limit "
-"(see B<getrlimit>(2))  by creating multiple child processes."
+"policies.  The reset-on-fork flag can be set by either:"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:287
+#: build/C/man7/sched.7:421
 msgid ""
-"More precisely, if the B<SCHED_RESET_ON_FORK> flag is specified, the "
-"following rules apply for subsequently created children:"
+"ORing the B<SCHED_RESET_ON_FORK> flag into the I<policy> argument when "
+"calling B<sched_setscheduler>(2)  (since Linux 2.6.32); or"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:295
+#: build/C/man7/sched.7:428
 msgid ""
-"If the calling process has a scheduling policy of B<SCHED_FIFO> or "
-"B<SCHED_RR>, the policy is reset to B<SCHED_OTHER> in child processes."
+"specifying the B<SCHED_FLAG_RESET_ON_FORK> flag in I<attr.sched_flags> when "
+"calling B<sched_setattr>(2)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:298
+#: 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<sched_getscheduler>(2)  and B<sched_getattr>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:441
+msgid ""
+"The reset-on-fork feature is intended for media-playback applications, and "
+"can be used to prevent applications evading the B<RLIMIT_RTTIME> resource "
+"limit (see B<getrlimit>(2))  by creating multiple child processes."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:444
+msgid ""
+"More precisely, if the reset-on-fork flag is set, the following rules apply "
+"for subsequently created children:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:452
+msgid ""
+"If the calling thread has a scheduling policy of B<SCHED_FIFO> or "
+"B<SCHED_RR>, the policy is reset to B<SCHED_OTHER> in child processes."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:307
+#: build/C/man7/sched.7:455
 msgid ""
-"After the B<SCHED_RESET_ON_FORK> flag has been enabled, it can only be reset "
-"if the process has the B<CAP_SYS_NICE> capability.  This flag is disabled in "
-"child processes created by B<fork>(2)."
+"If the calling process has a negative nice value, the nice value is reset to "
+"zero in child processes."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:313
+#: build/C/man7/sched.7:463
 msgid ""
-"The B<SCHED_RESET_ON_FORK> flag is visible in the policy value returned by "
-"B<sched_getscheduler>()"
+"After the reset-on-fork flag has been enabled, it can be reset only if the "
+"thread has the B<CAP_SYS_NICE> capability.  This flag is disabled in child "
+"processes created by B<fork>(2)."
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:313
+#: build/C/man7/sched.7:463
 #, no-wrap
 msgid "Privileges and resource limits"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:326
+#: build/C/man7/sched.7:475
 msgid ""
-"In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>)  processes "
+"In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>)  threads "
 "can set a nonzero static priority (i.e., set a real-time scheduling "
-"policy).  The only change that an unprivileged process can make is to set "
-"the B<SCHED_OTHER> policy, and this can only be done if the effective user "
-"ID of the caller of B<sched_setscheduler>()  matches the real or effective "
-"user ID of the target process (i.e., the process specified by I<pid>)  whose "
-"policy is being changed."
+"policy).  The only change that an unprivileged thread can make is to set the "
+"B<SCHED_OTHER> policy, and this can be done only if the effective user ID of "
+"the caller matches the real or effective user ID of the target thread (i.e., "
+"the thread specified by I<pid>)  whose policy is being changed."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:481
+msgid ""
+"A thread must be privileged (B<CAP_SYS_NICE>)  in order to set or modify a "
+"B<SCHED_DEADLINE> policy."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:336
+#: build/C/man7/sched.7:491
 msgid ""
 "Since Linux 2.6.12, the B<RLIMIT_RTPRIO> resource limit defines a ceiling on "
-"an unprivileged process's static priority for the B<SCHED_RR> and "
+"an unprivileged thread's static priority for the B<SCHED_RR> and "
 "B<SCHED_FIFO> policies.  The rules for changing scheduling policy and "
 "priority are as follows:"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:344
+#: build/C/man7/sched.7:499
 msgid ""
-"If an unprivileged process has a nonzero B<RLIMIT_RTPRIO> soft limit, then "
-"it can change its scheduling policy and priority, subject to the restriction "
+"If an unprivileged thread has a nonzero B<RLIMIT_RTPRIO> soft limit, then it "
+"can change its scheduling policy and priority, subject to the restriction "
 "that the priority cannot be set to a value higher than the maximum of its "
 "current priority and its B<RLIMIT_RTPRIO> soft limit."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:349
+#: build/C/man7/sched.7:504
 msgid ""
 "If the B<RLIMIT_RTPRIO> soft limit is 0, then the only permitted changes are "
 "to lower the priority, or to switch to a non-real-time policy."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:354
+#: 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 ""
 
 #.  commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:372
+#: build/C/man7/sched.7:528
 msgid ""
-"Special rules apply for the B<SCHED_IDLE>.  In Linux kernels before 2.6.39, "
-"an unprivileged process operating under this policy cannot change its "
+"Special rules apply for the B<SCHED_IDLE> policy.  In Linux kernels before "
+"2.6.39, an unprivileged thread operating under this policy cannot change its "
 "policy, regardless of the value of its B<RLIMIT_RTPRIO> resource limit.  In "
-"Linux kernels since 2.6.39, an unprivileged process can switch to either the "
+"Linux kernels since 2.6.39, an unprivileged thread can switch to either the "
 "B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its nice value falls "
 "within the range permitted by its B<RLIMIT_NICE> resource limit (see "
 "B<getrlimit>(2))."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:383
+#: build/C/man7/sched.7:539
 msgid ""
-"Privileged (B<CAP_SYS_NICE>)  processes ignore the B<RLIMIT_RTPRIO> limit; "
-"as with older kernels, they can make arbitrary changes to scheduling policy "
-"and priority.  See B<getrlimit>(2)  for further information on "
-"B<RLIMIT_RTPRIO>."
+"Privileged (B<CAP_SYS_NICE>)  threads ignore the B<RLIMIT_RTPRIO> limit; as "
+"with older kernels, they can make arbitrary changes to scheduling policy and "
+"priority.  See B<getrlimit>(2)  for further information on B<RLIMIT_RTPRIO>."
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:383
+#: build/C/man7/sched.7:539
 #, no-wrap
-msgid "Response time"
+msgid "Limiting the CPU usage of real-time and deadline processes"
 msgstr ""
 
-#.  as described in
-#.  .BR request_irq (9).
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:391
+#: 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."
-msgstr ""
-
-#. type: SS
-#: build/C/man2/sched_setscheduler.2:391
-#, no-wrap
-msgid "Miscellaneous"
+"A nonblocking infinite loop in a thread scheduled under the B<SCHED_FIFO>, "
+"B<SCHED_RR>, or B<SCHED_DEADLINE> policy will block all threads with lower "
+"priority forever.  Prior to Linux 2.6.25, the only way of preventing a "
+"runaway real-time process from freezing the system was to run (at the "
+"console)  a shell scheduled under a higher static priority than the tested "
+"application.  This allows an emergency kill of tested real-time applications "
+"that do not block or terminate as expected."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:396
+#: build/C/man7/sched.7:562
 msgid ""
-"Child processes inherit the scheduling policy and parameters across a "
-"B<fork>(2).  The scheduling policy and parameters are preserved across "
-"B<execve>(2)."
+"Since Linux 2.6.25, there are other techniques for dealing with runaway "
+"real-time and deadline processes.  One of these is to use the "
+"B<RLIMIT_RTTIME> resource limit to set a ceiling on the CPU time that a "
+"real-time process may consume.  See B<getrlimit>(2)  for details."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:402
+#: 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<mlock>(2)  or B<mlockall>(2)."
+"Since version 2.6.25, Linux also provides two I</proc> files that can be "
+"used to reserve a certain amount of CPU time to be used by non-real-time "
+"processes.  Reserving some CPU time in this fashion allows some CPU time to "
+"be allocated to (say) a root shell that can be used to kill a runaway "
+"process.  Both of these files specify time values in microseconds:"
 msgstr ""
 
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:414
-msgid ""
-"Since a nonblocking infinite loop in a process scheduled under B<SCHED_FIFO> "
-"or B<SCHED_RR> 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<RLIMIT_RTTIME> resource limit in B<getrlimit>(2)."
+#. type: TP
+#: build/C/man7/sched.7:570
+#, no-wrap
+msgid "I</proc/sys/kernel/sched_rt_period_us>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:422
+#: build/C/man7/sched.7:578
 msgid ""
-"POSIX systems on which B<sched_setscheduler>()  and B<sched_getscheduler>()  "
-"are available define B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
+"This file specifies a scheduling period that is equivalent to 100% CPU "
+"bandwidth.  The value in this file can range from 1 to B<INT_MAX>, giving an "
+"operating range of 1 microsecond to around 35 minutes.  The default value in "
+"this file is 1,000,000 (1 second)."
 msgstr ""
 
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:432
-msgid ""
-"On success, B<sched_setscheduler>()  returns zero.  On success, "
-"B<sched_getscheduler>()  returns the policy for the process (a nonnegative "
-"integer).  On error, -1 is returned, and I<errno> is set appropriately."
+#. type: TP
+#: build/C/man7/sched.7:578
+#, no-wrap
+msgid "I</proc/sys/kernel/sched_rt_runtime_us>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:438
+#: build/C/man7/sched.7:591
 msgid ""
-"The scheduling I<policy> is not one of the recognized policies, I<param> is "
-"NULL, or I<param> does not make sense for the I<policy>."
+"The value in this file specifies how much of the \"period\" time can be used "
+"by all real-time and deadline scheduled processes on the system.  The value "
+"in this file can range from -1 to B<INT_MAX>-1.  Specifying -1 makes the "
+"runtime the same as the period; that is, no CPU time is set aside for "
+"non-real-time processes (which was the Linux behavior before kernel "
+"2.6.25).  The default value in this file is 950,000 (0.95 seconds), meaning "
+"that 5% of the CPU time is reserved for processes that don't run under a "
+"real-time or deadline scheduling policy."
 msgstr ""
 
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:441
-msgid "The calling process does not have appropriate privileges."
+#. type: SS
+#: build/C/man7/sched.7:592
+#, no-wrap
+msgid "Response time"
 msgstr ""
 
+#.  as described in
+#.  .BR request_irq (9).
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:447
+#: build/C/man7/sched.7:600
 msgid ""
-"POSIX.1-2001 (but see BUGS below).  The B<SCHED_BATCH> and B<SCHED_IDLE> "
-"policies are Linux-specific."
+"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 ""
 
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:455
-msgid ""
-"POSIX.1 does not detail the permissions that an unprivileged process "
-"requires in order to call B<sched_setscheduler>(), 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."
+#. type: SS
+#: build/C/man7/sched.7:600
+#, no-wrap
+msgid "Miscellaneous"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:476
+#: build/C/man7/sched.7:605
 msgid ""
-"The scheduling policy and parameters are in fact per-thread attributes on "
-"Linux.  The value returned from a call to B<gettid>(2)  can be passed in the "
-"argument I<pid>.  Specifying I<pid> as 0 will operate on the attribute for "
-"the calling thread, and passing the value returned from a call to "
-"B<getpid>(2)  will operate on the attribute for the main thread of the "
-"thread group.  (If you are using the POSIX threads API, then use "
-"B<pthread_setschedparam>(3), B<pthread_getschedparam>(3), and "
-"B<pthread_setschedprio>(3), instead of the B<sched_*>(2)  system calls.)"
+"Child processes inherit the scheduling policy and parameters across a "
+"B<fork>(2).  The scheduling policy and parameters are preserved across "
+"B<execve>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:611
+msgid ""
+"Memory locking is usually needed for real-time processes to avoid paging "
+"delays; this can be done with B<mlock>(2)  or B<mlockall>(2)."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:486
+#: 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, "
@@ -3514,7 +4715,7 @@ msgid ""
 msgstr ""
 
 #. type: SS
-#: build/C/man2/sched_setscheduler.2:486
+#: build/C/man7/sched.7:622
 #, no-wrap
 msgid "Real-time features in the mainline Linux kernel"
 msgstr ""
@@ -3522,7 +4723,7 @@ msgstr ""
 #.  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:500
+#: 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 "
@@ -3534,20 +4735,20 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:504
+#: build/C/man7/sched.7:640
 #, no-wrap
 msgid "patch-I<kernelversion>-rtI<patchversion>\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:510
+#: build/C/man7/sched.7:646
 msgid ""
 "and can be downloaded from E<.UR "
 "http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/projects\\:/rt/> E<.UE .>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:519
+#: 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 "
@@ -3557,118 +4758,55 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:530
+#: build/C/man7/sched.7:664
 msgid ""
 "With the patches applied or after their full inclusion into the mainline "
 "kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
 "available.  If this is selected, Linux is transformed into a regular "
-"real-time operating system.  The FIFO and RR scheduling policies that can be "
-"selected using B<sched_setscheduler>()  are then used to run a process with "
-"true real-time priority and a minimum worst-case scheduling latency."
+"real-time operating system.  The FIFO and RR scheduling policies are then "
+"used to run a thread with true real-time priority and a minimum worst-case "
+"scheduling latency."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:538
+#: build/C/man7/sched.7:691
 msgid ""
-"POSIX says that on success, B<sched_setscheduler>()  should return the "
-"previous scheduling policy.  Linux B<sched_setscheduler>()  does not conform "
-"to this requirement, since it always returns 0 on success."
+"B<chrt>(1), B<taskset>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), "
+"B<munlock>(2), B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
+"B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
+"B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
+"B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
+"B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
+"B<cpuset>(7)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:559
+#: build/C/man7/sched.7:695
 msgid ""
-"B<chrt>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), B<munlock>(2), "
-"B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
-"B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getparam>(2), "
-"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setparam>(2), "
-"B<sched_yield>(2), B<setpriority>(2), B<capabilities>(7), B<cpuset>(7)"
+"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
+"& Associates, Inc., ISBN 1-56592-074-0."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/sched_setscheduler.2:567
+#: build/C/man7/sched.7:702
 msgid ""
-"I<Documentation/scheduler/sched-rt-group.txt> in the Linux kernel source "
-"tree (since kernel 2.6.25)."
-msgstr ""
-
-#. type: TH
-#: build/C/man2/sched_yield.2:29
-#, no-wrap
-msgid "SCHED_YIELD"
+"The Linux kernel source files I<Documentation/scheduler/sched-deadline.txt>, "
+"I<Documentation/scheduler/sched-rt-group.txt>, "
+"I<Documentation/scheduler/sched-design-CFS.txt>, and "
+"I<Documentation/scheduler/sched-nice-design.txt>"
 msgstr ""
 
 #. type: TH
-#: build/C/man2/sched_yield.2:29
+#: build/C/man2/setns.2:8
 #, no-wrap
-msgid "2008-10-18"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/sched_yield.2:32
-msgid "sched_yield - yield the processor"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/sched_yield.2:36
-msgid "B<int sched_yield(void);>"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/sched_yield.2:41
-msgid ""
-"B<sched_yield>()  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 ""
-
-#. type: Plain text
-#: build/C/man2/sched_yield.2:48
-msgid ""
-"On success, B<sched_yield>()  returns 0.  On error, -1 is returned, and "
-"I<errno> is set appropriately."
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/sched_yield.2:52
-msgid "In the Linux implementation, B<sched_yield>()  always succeeds."
-msgstr ""
-
-#. 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<sched_yield>()."
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/sched_yield.2:65
-msgid ""
-"POSIX systems on which B<sched_yield>()  is available define "
-"B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/sched_yield.2:78
-msgid ""
-"Strategic calls to B<sched_yield>()  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<sched_yield>()  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 ""
-
-#. type: Plain text
-#: build/C/man2/sched_yield.2:81
-msgid "B<sched_setscheduler>(2)  for a description of Linux scheduling"
+msgid "SETNS"
 msgstr ""
 
 #. type: TH
 #: build/C/man2/setns.2:8
 #, no-wrap
-msgid "SETNS"
+msgid "2015-01-10"
 msgstr ""
 
 #. type: Plain text
@@ -3693,7 +4831,7 @@ msgstr ""
 #: build/C/man2/setns.2:34
 msgid ""
 "The I<fd> argument is a file descriptor referring to one of the namespace "
-"entries in a I</proc/[pid]/ns/> directory; see B<proc>(5)  for further "
+"entries in a I</proc/[pid]/ns/> directory; see B<namespaces>(7)  for further "
 "information on I</proc/[pid]/ns/>.  The calling thread will be reassociated "
 "with the corresponding namespace, subject to any constraints imposed by the "
 "I<nstype> argument."
@@ -3721,7 +4859,7 @@ msgstr ""
 #. type: TP
 #: build/C/man2/setns.2:43
 #, no-wrap
-msgid "B<CLONE_NEWIPC>"
+msgid "B<CLONE_NEWIPC> (since Linux 3.0)"
 msgstr ""
 
 #. type: Plain text
@@ -3732,7 +4870,7 @@ msgstr ""
 #. type: TP
 #: build/C/man2/setns.2:47
 #, no-wrap
-msgid "B<CLONE_NEWNET>"
+msgid "B<CLONE_NEWNET> (since Linux 3.0)"
 msgstr ""
 
 #. type: Plain text
@@ -3743,16 +4881,49 @@ msgstr ""
 #. type: TP
 #: build/C/man2/setns.2:51
 #, no-wrap
-msgid "B<CLONE_NEWUTS>"
+msgid "B<CLONE_NEWNS> (since Linux 3.8)"
 msgstr ""
 
 #. type: Plain text
 #: build/C/man2/setns.2:55
+msgid "I<fd> must refer to a mount namespace."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/setns.2:55 build/C/man2/unshare.2:149
+#, no-wrap
+msgid "B<CLONE_NEWPID> (since Linux 3.8)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:59
+msgid "I<fd> must refer to a descendant PID namespace."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/setns.2:59 build/C/man2/unshare.2:176
+#, no-wrap
+msgid "B<CLONE_NEWUSER> (since Linux 3.8)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:63
+msgid "I<fd> must refer to a user namespace."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/setns.2:63
+#, no-wrap
+msgid "B<CLONE_NEWUTS> (since Linux 3.0)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:67
 msgid "I<fd> must refer to a UTS namespace."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:70
+#: build/C/man2/setns.2:82
 msgid ""
 "Specifying I<nstype> as 0 suffices if the caller knows (or does not care)  "
 "what type of namespace is referred to by I<fd>.  Specifying a nonzero value "
@@ -3764,58 +4935,132 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:77
+#: build/C/man2/setns.2:97
+msgid ""
+"B<CLONE_NEWPID> behaves somewhat differently from the other I<nstype> "
+"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<fd> is a "
+"descendant (child, grandchild, etc.)  of the PID namespace of the caller.  "
+"For further details on PID namespaces, see B<pid_namespaces>(7)."
+msgstr ""
+
+#.  See kernel/user_namespace.c:userns_install() [3.8 source]
+#.  commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
+#.  https://lwn.net/Articles/543273/
+#. type: Plain text
+#: build/C/man2/setns.2:124
+msgid ""
+"A process reassociating itself with a user namespace must have the "
+"B<CAP_SYS_ADMIN> capability in the target user namespace.  Upon successfully "
+"joining a user namespace, a process is granted all capabilities in that "
+"namespace, regardless of its user and group IDs.  A multithreaded process "
+"may not change user namespace with B<setns>().  It is not permitted to use "
+"B<setns>()  to reenter the caller's current user namespace.  This prevents a "
+"caller that has dropped capabilities from regaining those capabilities via a "
+"call to B<setns>().  For security reasons, a process can't join a new user "
+"namespace if it is sharing filesystem-related attributes (the attributes "
+"whose sharing is controlled by the B<clone>(2)  B<CLONE_FS> flag) with "
+"another process.  For further details on user namespaces, see "
+"B<user_namespaces>(7)."
+msgstr ""
+
+#.  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<CAP_SYS_CHROOT> and B<CAP_SYS_ADMIN> capabilities in its own "
+"user namespace and B<CAP_SYS_ADMIN> in the target mount namespace.  See "
+"B<user_namespaces>(7)  for details on the interaction of user namespaces and "
+"mount namespaces."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:145
 msgid ""
-"On success, I<setns>()  returns 0.  On failure, -1 is returned and I<errno> "
+"On success, B<setns>()  returns 0.  On failure, -1 is returned and I<errno> "
 "is set to indicate the error."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:82
+#: build/C/man2/setns.2:150
 msgid "I<fd> is not a valid file descriptor."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:89
+#: build/C/man2/setns.2:155
 msgid ""
 "I<fd> refers to a namespace whose type does not match that specified in "
-"I<nstype>, or there is problem with reassociating the the thread with the "
-"specified namespace."
+"I<nstype>."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:92
-msgid "Cannot allocate sufficient memory to change the specified namespace."
+#: 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:97
+#: build/C/man2/setns.2:164
+msgid ""
+"The caller tried to join an ancestor (parent, grandparent, etc...)  pid "
+"namespace."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:168
 msgid ""
-"The calling thread did not have the required privilege (B<CAP_SYS_ADMIN>)  "
-"for this operation."
+"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<CLONE_FS>)  state (in particular, the root "
+"directory)  with other processes and tried to join a new user namespace."
+msgstr ""
+
+#.  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:182
+msgid "Cannot allocate sufficient memory to change the specified namespace."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:102
+#: build/C/man2/setns.2:186
+msgid "The calling thread did not have the required capability for this operation."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:191
 msgid ""
 "The B<setns>()  system call first appeared in Linux in kernel 3.0; library "
 "support was added to glibc in version 2.14."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:106
+#: build/C/man2/setns.2:195
 msgid "The B<setns>()  system call is Linux-specific."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:112
+#: build/C/man2/setns.2:201
 msgid ""
 "Not all of the attributes that can be shared when a new thread is created "
 "using B<clone>(2)  can be changed using B<setns>()."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:121
+#: 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</proc/[pid]/ns/> "
@@ -3825,7 +5070,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:131
+#: build/C/man2/setns.2:220
 msgid ""
 "The following shell session demonstrates the use of this program (compiled "
 "as a binary named I<ns_exec>)  in conjunction with the B<CLONE_NEWUTS> "
@@ -3834,7 +5079,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:139
+#: build/C/man2/setns.2:228
 msgid ""
 "We begin by executing the example program in B<clone>(2)  in the "
 "background.  That program creates a child in a separate UTS namespace.  The "
@@ -3844,7 +5089,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:151
+#: build/C/man2/setns.2:240
 #, no-wrap
 msgid ""
 "$ B<su>                   # Need privilege for namespace operations\n"
@@ -3859,7 +5104,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:158
+#: 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 "
@@ -3867,7 +5112,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:164
+#: build/C/man2/setns.2:253
 #, no-wrap
 msgid ""
 "# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
@@ -3875,14 +5120,8 @@ msgid ""
 "bizarro\n"
 msgstr ""
 
-#. type: SS
-#: build/C/man2/setns.2:166
-#, no-wrap
-msgid "Program source"
-msgstr ""
-
 #. type: Plain text
-#: build/C/man2/setns.2:174
+#: build/C/man2/setns.2:263
 #, no-wrap
 msgid ""
 "#define _GNU_SOURCE\n"
@@ -3894,7 +5133,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:182
+#: build/C/man2/setns.2:271
 #, no-wrap
 msgid ""
 "int\n"
@@ -3904,7 +5143,7 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:187
+#: build/C/man2/setns.2:276
 #, no-wrap
 msgid ""
 "    if (argc E<lt> 3) {\n"
@@ -3915,34 +5154,36 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:191
+#: build/C/man2/setns.2:280
 #, no-wrap
 msgid ""
-"    fd = open(argv[1], O_RDONLY);   /* Get descriptor for namespace */\n"
+"    fd = open(argv[1], O_RDONLY);  /* Get descriptor for namespace */\n"
 "    if (fd == -1)\n"
 "        errExit(\"open\");\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:194
+#: build/C/man2/setns.2:283
 #, no-wrap
 msgid ""
-"    if (setns(fd, 0) == -1)         /* Join that namespace */\n"
+"    if (setns(fd, 0) == -1)        /* Join that namespace */\n"
 "        errExit(\"setns\");\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:198
+#: build/C/man2/setns.2:287
 #, no-wrap
 msgid ""
-"    execvp(argv[2], &argv[2]);      /* Execute a command in namespace */\n"
+"    execvp(argv[2], &argv[2]);     /* Execute a command in namespace */\n"
 "    errExit(\"execvp\");\n"
 "}\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/setns.2:205
-msgid "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
+#: build/C/man2/setns.2:295
+msgid ""
+"B<clone>(2), B<fork>(2), B<unshare>(2), B<vfork>(2), B<namespaces>(7), "
+"B<unix>(7)"
 msgstr ""
 
 #. type: TH
@@ -3951,25 +5192,24 @@ msgstr ""
 msgid "UNSHARE"
 msgstr ""
 
-#. type: TH
-#: build/C/man2/unshare.2:20
-#, no-wrap
-msgid "2012-12-31"
-msgstr ""
-
 #. type: Plain text
 #: build/C/man2/unshare.2:23
 msgid "unshare - disassociate parts of the process execution context"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:31
+#: build/C/man2/unshare.2:28
 #, no-wrap
 msgid "B<int unshare(int >I<flags>B<);>\n"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:44
+#: build/C/man2/unshare.2:36
+msgid "B<unshare>():"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:62
 msgid ""
 "B<unshare>()  allows a process to disassociate parts of its execution "
 "context that are currently being shared with other processes.  Part of the "
@@ -3980,14 +5220,14 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:49
+#: build/C/man2/unshare.2:67
 msgid ""
 "The main use of B<unshare>()  is to allow a process to control its shared "
 "execution context without creating a new process."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:56
+#: build/C/man2/unshare.2:74
 msgid ""
 "The I<flags> argument is a bit mask that specifies which parts of the "
 "execution context should be unshared.  This argument is specified by ORing "
@@ -3995,13 +5235,13 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/unshare.2:56
+#: build/C/man2/unshare.2:74
 #, no-wrap
 msgid "B<CLONE_FILES>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:64
+#: build/C/man2/unshare.2:82
 msgid ""
 "Reverse the effect of the B<clone>(2)  B<CLONE_FILES> flag.  Unshare the "
 "file descriptor table, so that the calling process no longer shares its file "
@@ -4009,32 +5249,32 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/unshare.2:64
+#: build/C/man2/unshare.2:82
 #, no-wrap
 msgid "B<CLONE_FS>"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:78
+#: build/C/man2/unshare.2:96
 msgid ""
-"Reverse the effect of the B<clone>(2)  B<CLONE_FS> flag.  Unshare file "
-"system attributes, so that the calling process no longer shares its root "
-"directory (B<chroot>(2)), current directory (B<chdir>(2)), or umask "
-"(B<umask>(2))  attributes with any other process."
+"Reverse the effect of the B<clone>(2)  B<CLONE_FS> flag.  Unshare filesystem "
+"attributes, so that the calling process no longer shares its root directory "
+"(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2))  "
+"attributes with any other process."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:95
+#: build/C/man2/unshare.2:113
 msgid ""
 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWIPC> flag.  "
-"Unshare the System V IPC namespace, so that the calling process has a "
-"private copy of the System V IPC namespace which is not shared with any "
+"Unshare the System\\ V IPC namespace, so that the calling process has a "
+"private copy of the System\\ V IPC namespace which is not shared with any "
 "other process.  Specifying this flag automatically implies B<CLONE_SYSVSEM> "
 "as well.  Use of B<CLONE_NEWIPC> requires the B<CAP_SYS_ADMIN> capability."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:110
+#: build/C/man2/unshare.2:128
 msgid ""
 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWNET> flag.  "
 "Unshare the network namespace, so that the calling process is moved into a "
@@ -4043,7 +5283,7 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/unshare.2:110
+#: build/C/man2/unshare.2:128
 #, no-wrap
 msgid "B<CLONE_NEWNS>"
 msgstr ""
@@ -4053,7 +5293,7 @@ msgstr ""
 #.  CLONE_FS, and CLONE_FILES reverse the action of the clone()
 #.  flags of the same name.
 #. type: Plain text
-#: build/C/man2/unshare.2:131
+#: build/C/man2/unshare.2:149
 msgid ""
 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWNS> flag.  "
 "Unshare the mount namespace, so that the calling process has a private copy "
@@ -4063,7 +5303,44 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:145
+#: build/C/man2/unshare.2:176
+msgid ""
+"This flag has the same effect as the B<clone>(2)  B<CLONE_NEWPID> flag.  "
+"Unshare the PID namespace, so that the calling process has a new PID "
+"namespace for its children which is not shared with any previously existing "
+"process.  The calling process is I<not> moved into the new namespace.  The "
+"first child created by the calling process will have the process ID 1 and "
+"will assume the role of B<init>(1)  in the new namespace.  B<CLONE_NEWPID> "
+"automatically implies B<CLONE_THREAD> as well.  Use of B<CLONE_NEWPID> "
+"requires the B<CAP_SYS_ADMIN> capability.  For further information, see "
+"B<pid_namespaces>(7)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:190
+msgid ""
+"This flag has the same effect as the B<clone>(2)  B<CLONE_NEWUSER> flag.  "
+"Unshare the user namespace, so that the calling process is moved into a new "
+"user namespace which is not shared with any previously existing process.  As "
+"with the child process created by B<clone>(2)  with the B<CLONE_NEWUSER> "
+"flag, the caller obtains a full set of capabilities in the new namespace."
+msgstr ""
+
+#.  commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
+#.  https://lwn.net/Articles/543273/
+#. type: Plain text
+#: build/C/man2/unshare.2:206
+msgid ""
+"B<CLONE_NEWUSER> requires that the calling process is not threaded; "
+"specifying B<CLONE_NEWUSER> automatically implies B<CLONE_THREAD>.  Since "
+"Linux 3.9, B<CLONE_NEWUSER> also automatically implies B<CLONE_FS>.  "
+"B<CLONE_NEWUSER> requires that the user ID and group ID of the calling "
+"process are mapped to user IDs and group IDs in the user namespace of the "
+"calling process at the time of the call."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:223
 msgid ""
 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWUTS> flag.  "
 "Unshare the UTS IPC namespace, so that the calling process has a private "
@@ -4072,81 +5349,88 @@ msgid ""
 msgstr ""
 
 #. type: TP
-#: build/C/man2/unshare.2:145
+#: build/C/man2/unshare.2:223
 #, no-wrap
 msgid "B<CLONE_SYSVSEM> (since Linux 2.6.26)"
 msgstr ""
 
 #.  commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7
-#.  As at 2.6.16, the following forced implications also apply,
+#.  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:243
+msgid ""
+"This flag reverses the effect of the B<clone>(2)  B<CLONE_SYSVSEM> flag.  "
+"Unshare System\\ V semaphore adjustment (I<semadj>)  values, so that the "
+"calling process has a new empty I<semadj> list that is not shared with any "
+"other process.  If this is the last process that has a reference to the "
+"process's current I<semadj> list, then the adjustments in that list are "
+"applied to the corresponding semaphores, as described in B<semop>(2)."
+msgstr ""
+
+#.  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.
-#. type: Plain text
-#: build/C/man2/unshare.2:182
+#.  See kernel/fork.c::check_unshare_flags()
+#. type: Plain text
+#: build/C/man2/unshare.2:270
 msgid ""
-"This flag reverses the effect of the B<clone>(2)  B<CLONE_SYSVSEM> flag.  "
-"Unshare System V semaphore undo values, so that the calling process has a "
-"private copy which is not shared with any other process.  Use of "
-"B<CLONE_SYSVSEM> requires the B<CAP_SYS_ADMIN> capability."
+"In addition, B<CLONE_THREAD>, B<CLONE_SIGHAND>, and B<CLONE_VM> can be "
+"specified in I<flags> if the caller is single threaded (i.e., it is not "
+"sharing its address space with another process or thread).  In this case, "
+"these flags have no effect.  (Note also that specifying B<CLONE_THREAD> "
+"automatically implies B<CLONE_VM>, and specifying B<CLONE_VM> automatically "
+"implies B<CLONE_SIGHAND>.)  If the process is multithreaded, then the use of "
+"these flags results in an error."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:189
+#: build/C/man2/unshare.2:277
 msgid ""
 "If I<flags> is specified as zero, then B<unshare>()  is a no-op; no changes "
 "are made to the calling process's execution context."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:194
+#: build/C/man2/unshare.2:282
 msgid ""
 "On success, zero returned.  On failure, -1 is returned and I<errno> is set "
 "to indicate the error."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:199
+#: build/C/man2/unshare.2:287
 msgid "An invalid bit was specified in I<flags>."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:203
+#: build/C/man2/unshare.2:296
+msgid ""
+"B<CLONE_THREAD>, B<CLONE_SIGHAND>, or B<CLONE_VM> was specified in I<flags>, "
+"and the caller is multithreaded."
+msgstr ""
+
+#. 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:206
+#: build/C/man2/unshare.2:303
 msgid "The calling process did not have the required privileges for this operation."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:210
+#: build/C/man2/unshare.2:334
 msgid "The B<unshare>()  system call was added to Linux in kernel 2.6.16."
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:214
+#: build/C/man2/unshare.2:338
 msgid "The B<unshare>()  system call is Linux-specific."
 msgstr ""
 
@@ -4170,7 +5454,7 @@ msgstr ""
 #. be incrementally added to unshare without affecting legacy
 #. applications using unshare.
 #. type: Plain text
-#: build/C/man2/unshare.2:248
+#: 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<clone>(2)  can be unshared using B<unshare>().  In "
@@ -4180,11 +5464,147 @@ msgid ""
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:254
-msgid "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
+#: build/C/man2/unshare.2:381
+msgid ""
+"The program below provides a simple implementation of the B<unshare>(1)  "
+"command, which unshares one or more namespaces and executes the command "
+"supplied in its command-line arguments.  Here's an example of the use of "
+"this program, running a shell in a new mount namespace, and verifying that "
+"the original shell and the new shell are in separate mount namespaces:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:390
+#, no-wrap
+msgid ""
+"$ B<readlink /proc/$$/ns/mnt>\n"
+"mnt:[4026531840]\n"
+"$ B<sudo ./unshare -m /bin/bash>\n"
+"[sudo] password for cecilia:\n"
+"# B<readlink /proc/$$/ns/mnt>\n"
+"mnt:[4026532325]\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:396
+msgid ""
+"The differing output of the two B<readlink>(1)  commands shows that the two "
+"shells are in different mount namespaces."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:400
+#, no-wrap
+msgid "/* unshare.c\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:409
+#, no-wrap
+msgid ""
+"   A simple implementation of the unshare(1) command: unshare\n"
+"   namespaces and execute a command.\n"
+"*/\n"
+"#define _GNU_SOURCE\n"
+"#include E<lt>sched.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:412
+#, no-wrap
+msgid ""
+"/* A simple error-handling function: print an error message based\n"
+"   on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
+msgstr ""
+
+#. type: Plain text
+#: 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 ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:434
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+"    int flags, opt;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:436
+#, no-wrap
+msgid "    flags = 0;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:448
+#, no-wrap
+msgid ""
+"    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 ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:451
+#, no-wrap
+msgid ""
+"    if (optind E<gt>= argc)\n"
+"        usage(argv[0]);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:454
+#, no-wrap
+msgid ""
+"    if (unshare(flags) == -1)\n"
+"        errExit(\"unshare\");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:458
+#, no-wrap
+msgid ""
+"    execvp(argv[optind], &argv[optind]);\n"
+"    errExit(\"execvp\");\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:467
+msgid ""
+"B<unshare>(1), B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), "
+"B<vfork>(2), B<namespaces>(7)"
 msgstr ""
 
 #. type: Plain text
-#: build/C/man2/unshare.2:257
+#: build/C/man2/unshare.2:470
 msgid "I<Documentation/unshare.txt> in the Linux kernel source tree"
 msgstr ""