-Subproject commit 1db5d1ae560b7b813ebab68a929c905cb8d0471a
+Subproject commit 91419a08041d024741ba66ceefa98c22bb0a0f03
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-06-03 01:29+0900\n"
+"POT-Creation-Date: 2014-06-08 01:15+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"
msgstr ""
#. type: TH
-#: build/C/man7/inotify.7:26 build/C/man2/inotify_add_watch.2:28 build/C/man2/inotify_init.2:29 build/C/man2/inotify_rm_watch.2:27
+#: build/C/man7/inotify.7:26 build/C/man2/inotify_add_watch.2:28 build/C/man2/inotify_init.2:29 build/C/man2/inotify_rm_watch.2:27 build/C/man2/fanotify_init.2:24 build/C/man2/fanotify_mark.2:24 build/C/man7/fanotify.7:25
#, no-wrap
msgid "Linux"
msgstr ""
#. type: TH
-#: build/C/man7/inotify.7:26 build/C/man2/inotify_add_watch.2:28 build/C/man2/inotify_init.2:29 build/C/man2/inotify_rm_watch.2:27
+#: build/C/man7/inotify.7:26 build/C/man2/inotify_add_watch.2:28 build/C/man2/inotify_init.2:29 build/C/man2/inotify_rm_watch.2:27 build/C/man2/fanotify_init.2:24 build/C/man2/fanotify_mark.2:24 build/C/man7/fanotify.7:25
#, no-wrap
msgid "Linux Programmer's Manual"
msgstr ""
#. type: SH
-#: build/C/man7/inotify.7:27 build/C/man2/inotify_add_watch.2:29 build/C/man2/inotify_init.2:30 build/C/man2/inotify_rm_watch.2:28
+#: build/C/man7/inotify.7:27 build/C/man2/inotify_add_watch.2:29 build/C/man2/inotify_init.2:30 build/C/man2/inotify_rm_watch.2:28 build/C/man2/fanotify_init.2:25 build/C/man2/fanotify_mark.2:25 build/C/man7/fanotify.7:26
#, no-wrap
msgid "NAME"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man7/inotify.7:29 build/C/man2/inotify_add_watch.2:35 build/C/man2/inotify_init.2:39 build/C/man2/inotify_rm_watch.2:36
+#: build/C/man7/inotify.7:29 build/C/man2/inotify_add_watch.2:35 build/C/man2/inotify_init.2:39 build/C/man2/inotify_rm_watch.2:36 build/C/man2/fanotify_init.2:33 build/C/man2/fanotify_mark.2:36 build/C/man7/fanotify.7:28
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
msgstr ""
#. type: IP
-#: build/C/man7/inotify.7:39 build/C/man7/inotify.7:50 build/C/man7/inotify.7:63 build/C/man7/inotify.7:69 build/C/man7/inotify.7:72
+#: build/C/man7/inotify.7:39 build/C/man7/inotify.7:50 build/C/man7/inotify.7:63 build/C/man7/inotify.7:69 build/C/man7/inotify.7:72 build/C/man2/fanotify_init.2:242 build/C/man2/fanotify_mark.2:195 build/C/man2/fanotify_mark.2:201 build/C/man2/fanotify_mark.2:209 build/C/man2/fanotify_mark.2:215 build/C/man2/fanotify_mark.2:226 build/C/man2/fanotify_mark.2:308 build/C/man2/fanotify_mark.2:318 build/C/man2/fanotify_mark.2:324 build/C/man7/fanotify.7:490 build/C/man7/fanotify.7:499
#, no-wrap
msgid "*"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man7/inotify.7:541 build/C/man2/inotify_add_watch.2:118 build/C/man2/inotify_init.2:94 build/C/man2/inotify_rm_watch.2:67
+#: build/C/man7/inotify.7:541 build/C/man2/inotify_add_watch.2:118 build/C/man2/inotify_init.2:94 build/C/man2/inotify_rm_watch.2:67 build/C/man2/fanotify_init.2:233 build/C/man2/fanotify_mark.2:299 build/C/man7/fanotify.7:446
#, no-wrap
msgid "VERSIONS"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man7/inotify.7:549 build/C/man2/inotify_add_watch.2:120 build/C/man2/inotify_init.2:101 build/C/man2/inotify_rm_watch.2:69
+#: build/C/man7/inotify.7:549 build/C/man2/inotify_add_watch.2:120 build/C/man2/inotify_init.2:101 build/C/man2/inotify_rm_watch.2:69 build/C/man2/fanotify_init.2:237 build/C/man2/fanotify_mark.2:303 build/C/man7/fanotify.7:450
#, no-wrap
msgid "CONFORMING TO"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man7/inotify.7:551
+#: build/C/man7/inotify.7:551 build/C/man7/fanotify.7:452
#, no-wrap
msgid "NOTES"
msgstr ""
msgstr ""
#. type: SS
-#: build/C/man7/inotify.7:612
+#: build/C/man7/inotify.7:612 build/C/man7/fanotify.7:459
#, no-wrap
msgid "Limitations and caveats"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man7/inotify.7:728
+#: build/C/man7/inotify.7:728 build/C/man2/fanotify_init.2:239 build/C/man2/fanotify_mark.2:305 build/C/man7/fanotify.7:487
#, no-wrap
msgid "BUGS"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man7/inotify.7:755 build/C/man2/inotify_add_watch.2:122 build/C/man2/inotify_init.2:103 build/C/man2/inotify_rm_watch.2:71
+#: build/C/man7/inotify.7:755 build/C/man2/inotify_add_watch.2:122 build/C/man2/inotify_init.2:103 build/C/man2/inotify_rm_watch.2:71 build/C/man2/fanotify_init.2:252 build/C/man2/fanotify_mark.2:332 build/C/man7/fanotify.7:738
#, no-wrap
msgid "SEE ALSO"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man7/inotify.7:768 build/C/man2/inotify_add_watch.2:126 build/C/man2/inotify_init.2:107 build/C/man2/inotify_rm_watch.2:75
+#: build/C/man7/inotify.7:768 build/C/man2/inotify_add_watch.2:126 build/C/man2/inotify_init.2:107 build/C/man2/inotify_rm_watch.2:75 build/C/man2/fanotify_init.2:255 build/C/man2/fanotify_mark.2:335 build/C/man7/fanotify.7:743
#, no-wrap
msgid "COLOPHON"
msgstr ""
#. type: Plain text
-#: build/C/man7/inotify.7:776 build/C/man2/inotify_add_watch.2:134 build/C/man2/inotify_init.2:115 build/C/man2/inotify_rm_watch.2:83
+#: build/C/man7/inotify.7:776 build/C/man2/inotify_add_watch.2:134 build/C/man2/inotify_init.2:115 build/C/man2/inotify_rm_watch.2:83 build/C/man2/fanotify_init.2:263 build/C/man2/fanotify_mark.2:343 build/C/man7/fanotify.7:751
msgid ""
"This page is part of release 3.67 of the Linux I<man-pages> project. A "
"description of the project, information about reporting bugs, and the latest "
msgstr ""
#. type: SH
-#: build/C/man2/inotify_add_watch.2:31 build/C/man2/inotify_init.2:32 build/C/man2/inotify_rm_watch.2:30
+#: build/C/man2/inotify_add_watch.2:31 build/C/man2/inotify_init.2:32 build/C/man2/inotify_rm_watch.2:30 build/C/man2/fanotify_init.2:27 build/C/man2/fanotify_mark.2:28
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man2/inotify_add_watch.2:79 build/C/man2/inotify_init.2:74 build/C/man2/inotify_rm_watch.2:48
+#: build/C/man2/inotify_add_watch.2:79 build/C/man2/inotify_init.2:74 build/C/man2/inotify_rm_watch.2:48 build/C/man2/fanotify_init.2:199 build/C/man2/fanotify_mark.2:236
#, no-wrap
msgid "RETURN VALUE"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man2/inotify_add_watch.2:86 build/C/man2/inotify_init.2:79 build/C/man2/inotify_rm_watch.2:55
+#: build/C/man2/inotify_add_watch.2:86 build/C/man2/inotify_init.2:79 build/C/man2/inotify_rm_watch.2:55 build/C/man2/fanotify_init.2:206 build/C/man2/fanotify_mark.2:243 build/C/man7/fanotify.7:394
#, no-wrap
msgid "ERRORS"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/inotify_add_watch.2:90 build/C/man2/inotify_rm_watch.2:56
+#: build/C/man2/inotify_add_watch.2:90 build/C/man2/inotify_rm_watch.2:56 build/C/man2/fanotify_mark.2:244
#, no-wrap
msgid "B<EBADF>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/inotify_add_watch.2:97 build/C/man2/inotify_init.2:80 build/C/man2/inotify_rm_watch.2:60
+#: build/C/man2/inotify_add_watch.2:97 build/C/man2/inotify_init.2:80 build/C/man2/inotify_rm_watch.2:60 build/C/man2/fanotify_init.2:207 build/C/man2/fanotify_mark.2:248 build/C/man2/fanotify_mark.2:257 build/C/man7/fanotify.7:399 build/C/man7/fanotify.7:433
#, no-wrap
msgid "B<EINVAL>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/inotify_add_watch.2:106
+#: build/C/man2/inotify_add_watch.2:106 build/C/man2/fanotify_mark.2:265 build/C/man7/fanotify.7:439
#, no-wrap
msgid "B<ENOENT>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/inotify_add_watch.2:111 build/C/man2/inotify_init.2:91
+#: build/C/man2/inotify_add_watch.2:111 build/C/man2/inotify_init.2:91 build/C/man2/fanotify_init.2:219 build/C/man2/fanotify_mark.2:274
#, no-wrap
msgid "B<ENOMEM>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/inotify_add_watch.2:114
+#: build/C/man2/inotify_add_watch.2:114 build/C/man2/fanotify_mark.2:277
#, no-wrap
msgid "B<ENOSPC>"
msgstr ""
msgstr ""
#. type: Plain text
-#: build/C/man2/inotify_add_watch.2:122 build/C/man2/inotify_rm_watch.2:71
+#: build/C/man2/inotify_add_watch.2:122 build/C/man2/inotify_rm_watch.2:71 build/C/man2/fanotify_init.2:239 build/C/man2/fanotify_mark.2:305
msgid "This system call is Linux-specific."
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/inotify_init.2:85
+#: build/C/man2/inotify_init.2:85 build/C/man2/fanotify_init.2:216 build/C/man7/fanotify.7:402
#, no-wrap
msgid "B<EMFILE>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/inotify_init.2:88
+#: build/C/man2/inotify_init.2:88 build/C/man7/fanotify.7:409
#, no-wrap
msgid "B<ENFILE>"
msgstr ""
#: build/C/man2/inotify_rm_watch.2:75
msgid "B<inotify_add_watch>(2), B<inotify_init>(2), B<inotify>(7)"
msgstr ""
+
+#. type: TH
+#: build/C/man2/fanotify_init.2:24
+#, no-wrap
+msgid "FANOTIFY_INIT"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/fanotify_init.2:24
+#, no-wrap
+msgid "2014-05-18"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:27
+msgid "fanotify_init - create and initialize fanotify group"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:29
+msgid "B<#include E<lt>fcntl.hE<gt>>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:31
+msgid "B<#include E<lt>sys/fanotify.hE<gt>>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:33
+msgid ""
+"B<int fanotify_init(unsigned int >I<flags>B<, unsigned int "
+">I<event_f_flags>B<);>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:36 build/C/man2/fanotify_mark.2:39
+msgid "For an overview of the fanotify API, see B<fanotify>(7)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:40
+msgid ""
+"B<fanotify_init>() initializes a new fanotify group and returns a file "
+"descriptor for the event queue associated with the group."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:51
+msgid ""
+"The file descriptor is used in calls to B<fanotify_mark>(2) to specify the "
+"files, directories, and mounts for which fanotify events shall be created. "
+"These events are received by reading from the file descriptor. Some events "
+"are only informative, indicating that a file has been accessed. Other "
+"events can be used to determine whether another application is permitted to "
+"access a file or directory. Permission to access filesystem objects is "
+"granted by writing to the file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:54
+msgid ""
+"Multiple programs may be using the fanotify interface at the same time to "
+"monitor the same files."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:58
+msgid ""
+"In the current implementation, the number of fanotify groups per user is "
+"limited to 128. This limit cannot be overridden."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:67
+msgid ""
+"Calling B<fanotify_init>() requires the B<CAP_SYS_ADMIN> capability. This "
+"constraint might be relaxed in future versions of the API. Therefore, "
+"certain additional capability checks have been implemented as indicated "
+"below."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:73
+msgid ""
+"The I<flags> argument contains a multi-bit field defining the notification "
+"class of the listening application and further single bit fields specifying "
+"the behavior of the file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:77
+msgid ""
+"If multiple listeners for permission events exist, the notification class is "
+"used to establish the sequence in which the listeners receive the events."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:80
+msgid "Only one of the following notification classes may be specified in I<flags>:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:80
+#, no-wrap
+msgid "B<FAN_CLASS_PRE_CONTENT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:88
+msgid ""
+"This value allows the receipt of events notifying that a file has been "
+"accessed and events for permission decisions if a file may be accessed. It "
+"is intended for event listeners that need to access files before they "
+"contain their final data. This notification class might be used by "
+"hierarchical storage managers, for example."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:88
+#, no-wrap
+msgid "B<FAN_CLASS_CONTENT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:96
+msgid ""
+"This value allows the receipt of events notifying that a file has been "
+"accessed and events for permission decisions if a file may be accessed. It "
+"is intended for event listeners that need to access files when they already "
+"contain their final content. This notification class might be used by "
+"malware detection programs, for example."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:96
+#, no-wrap
+msgid "B<FAN_CLASS_NOTIF>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:103
+msgid ""
+"This is the default value. It does not need to be specified. This value "
+"only allows the receipt of events notifying that a file has been accessed. "
+"Permission decisions before the file is accessed are not possible."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:111
+msgid ""
+"Listeners with different notification classes will receive events in the "
+"order B<FAN_CLASS_PRE_CONTENT>, B<FAN_CLASS_CONTENT>, B<FAN_CLASS_NOTIF>. "
+"The order of notification for listeners in the same notification class is "
+"undefined."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:114
+msgid "The following bits can additionally be set in I<flags>:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:114
+#, no-wrap
+msgid "B<FAN_CLOEXEC>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:123
+msgid ""
+"Set the close-on-exec flag (B<FD_CLOEXEC>) on the new file descriptor. See "
+"the description of the B<O_CLOEXEC> flag in B<open>(2)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:123
+#, no-wrap
+msgid "B<FAN_NONBLOCK>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:133
+msgid ""
+"Enable the nonblocking flag (B<O_NONBLOCK>) for the file descriptor. "
+"Reading from the file descriptor will not block. Instead, if no data is "
+"available, B<read>(2) will fail with the error B<EAGAIN>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:133
+#, no-wrap
+msgid "B<FAN_UNLIMITED_QUEUE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:139
+msgid ""
+"Remove the limit of 16384 events for the event queue. Use of this flag "
+"requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:139
+#, no-wrap
+msgid "B<FAN_UNLIMITED_MARKS>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:145
+msgid ""
+"Remove the limit of 8192 marks. Use of this flag requires the "
+"B<CAP_SYS_ADMIN> capability."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:158
+msgid ""
+"The I<event_f_flags> argument defines the file status flags that will be set "
+"on the open file descriptions that are created for fanotify events. For "
+"details of these flags, see the description of the I<flags> values in "
+"B<open>(2). I<event_f_flags> includes a multi-bit field for the access "
+"mode. This field can take the following values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:158
+#, no-wrap
+msgid "B<O_RDONLY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:161
+msgid "This value allows only read access."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:161
+#, no-wrap
+msgid "B<O_WRONLY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:164
+msgid "This value allows only write access."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:164
+#, no-wrap
+msgid "B<O_RDWR>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:167
+msgid "This value allows read and write access."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:171
+msgid "Additional bits can be set in I<event_f_flags>. The most useful values are:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:171
+#, no-wrap
+msgid "B<O_LARGEFILE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:178
+msgid ""
+"Enable support for files exceeding 2 GB. Failing to set this flag will "
+"result in an B<EOVERFLOW> error when trying to open a large file which is "
+"monitored by an fanotify group on a 32-bit system."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:178
+#, no-wrap
+msgid "B<O_CLOEXEC>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:186
+msgid ""
+"Enable the close-on-exec flag for the file descriptor. See the description "
+"of the B<O_CLOEXEC> flag in B<open>(2) for reasons why this may be useful."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:199
+msgid ""
+"The following are also allowable: B<O_APPEND>, B<O_DSYNC>, B<O_NOATIME>, "
+"B<O_NONBLOCK>, and B<O_SYNC>. Specifying any other flag in I<event_f_flags> "
+"yields the error B<EINVAL> (but see BUGS)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:206
+msgid ""
+"On success, B<fanotify_init>() returns a new file descriptor. On error, -1 "
+"is returned, and I<errno> is set to indicate the error."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:216
+msgid ""
+"An invalid value was passed in I<flags> or I<event_f_flags>. "
+"B<FAN_ALL_INIT_FLAGS> defines all allowable bits for I<flags>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:219
+msgid "The number of fanotify groups for this user exceeds 128."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:222
+msgid "The allocation of memory for the notification group failed."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:222 build/C/man2/fanotify_mark.2:283
+#, no-wrap
+msgid "B<ENOSYS>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:228
+msgid ""
+"This kernel does not implement B<fanotify_init>(). The fanotify API is "
+"available only if the kernel was configured with B<CONFIG_FANOTIFY>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:228
+#, no-wrap
+msgid "B<EPERM>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:233
+msgid ""
+"The operation is not permitted because the caller lacks the B<CAP_SYS_ADMIN> "
+"capability."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:237
+msgid ""
+"B<fanotify_init>() was introduced in version 2.6.36 of the Linux kernel and "
+"enabled in version 2.6.37."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:242
+msgid "As of Linux 3.15, the following bug exists:"
+msgstr ""
+
+#. FIXME: Patch accepted to mm tree.
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:252
+msgid ""
+"The I<event_f_flags> argument is not checked for invalid flags. Flags that "
+"are intended only for internal use, such as B<FMODE_EXEC>, can be set, and "
+"will consequently be set for the file descriptors returned when reading from "
+"the fanotify file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:255
+msgid "B<fanotify_mark>(2), B<fanotify>(7)"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/fanotify_mark.2:24
+#, no-wrap
+msgid "FANOTIFY_MARK"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/fanotify_mark.2:24
+#, no-wrap
+msgid "2014-04-24"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:28
+msgid ""
+"fanotify_mark - add, remove, or modify an fanotify mark on a filesystem "
+"object"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:31
+#, no-wrap
+msgid "B<#include E<lt>sys/fanotify.hE<gt>>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:35
+#, no-wrap
+msgid ""
+"B<int fanotify_mark(int >I<fanotify_fd>B<, unsigned int >I<flags>B<,>\n"
+"B< uint64_t >I<mask>B<, int >I<dirfd>B<, const char "
+"*>I<pathname>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:44
+msgid ""
+"B<fanotify_mark>(2) adds, removes, or modifies an fanotify mark on a "
+"filesystem object. The caller must have read permission on the filesystem "
+"object that is to be marked."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:49
+msgid ""
+"The I<fanotify_fd> argument is a file descriptor returned by "
+"B<fanotify_init>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:53
+msgid ""
+"I<flags> is a bit mask describing the modification to perform. It must "
+"include exactly one of the following values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:53
+#, no-wrap
+msgid "B<FAN_MARK_ADD>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:62
+msgid ""
+"The events in I<mask> will be added to the mark mask (or to the ignore "
+"mask). I<mask> must be nonempty or the error B<EINVAL> will occur."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:62
+#, no-wrap
+msgid "B<FAN_MARK_REMOVE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:71
+msgid ""
+"The events in argument I<mask> will be removed from the mark mask (or from "
+"the ignore mask). I<mask> must be nonempty or the error B<EINVAL> will "
+"occur."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:71
+#, no-wrap
+msgid "B<FAN_MARK_FLUSH>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:86
+msgid ""
+"Remove either all mount or all non-mount marks from the fanotify group. If "
+"I<flag> contains B<FAN_MARK_MOUNT>, all marks for mounts are removed from "
+"the group. Otherwise, all marks for directories and files are removed. No "
+"flag other than B<FAN_MARK_MOUNT> can be used in conjunction with "
+"B<FAN_MARK_FLUSH>. I<mask> is ignored."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:90
+msgid ""
+"If none of the values above is specified, or more than one is specified, the "
+"call fails with the error B<EINVAL>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:94
+msgid "In addition, zero or more of the following values may be ORed into I<flags>:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:94
+#, no-wrap
+msgid "B<FAN_MARK_DONT_FOLLOW>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:105
+msgid ""
+"If I<pathname> is a symbolic link, mark the link itself, rather than the "
+"file to which it refers. (By default, B<fanotify_mark>() dereferences "
+"I<pathname> if it is a symbolic link.)"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:105
+#, no-wrap
+msgid "B<FAN_MARK_ONLYDIR>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:110
+msgid ""
+"If the filesystem object to be marked is not a directory, the error "
+"B<ENOTDIR> shall be raised."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:110
+#, no-wrap
+msgid "B<FAN_MARK_MOUNT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:121
+msgid ""
+"Mark the mount point specified by I<pathname>. If I<pathname> is not itself "
+"a mount point, the mount point containing I<pathname> will be marked. All "
+"directories, subdirectories, and the contained files of the mount point will "
+"be monitored."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:121
+#, no-wrap
+msgid "B<FAN_MARK_IGNORED_MASK>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:126
+msgid "The events in I<mask> shall be added to or removed from the ignore mask."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:126
+#, no-wrap
+msgid "B<FAN_MARK_IGNORED_SURV_MODIFY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:132
+msgid ""
+"The ignore mask shall survive modify events. If this flag is not set, the "
+"ignore mask is cleared when a modify event occurs for the ignored file or "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:136
+msgid ""
+"I<mask> defines which events shall be listened for (or which shall be "
+"ignored). It is a bit mask composed of the following values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:136 build/C/man7/fanotify.7:246
+#, no-wrap
+msgid "B<FAN_ACCESS>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:139
+msgid "Create an event when a file or directory (but see BUGS) is accessed (read)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:139 build/C/man7/fanotify.7:252
+#, no-wrap
+msgid "B<FAN_MODIFY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:142
+msgid "Create an event when a file is modified (write)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:142 build/C/man7/fanotify.7:255
+#, no-wrap
+msgid "B<FAN_CLOSE_WRITE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:145
+msgid "Create an event when a writable file is closed."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:145 build/C/man7/fanotify.7:262
+#, no-wrap
+msgid "B<FAN_CLOSE_NOWRITE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:148
+msgid "Create an event when a read-only file or directory is closed."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:148 build/C/man7/fanotify.7:249
+#, no-wrap
+msgid "B<FAN_OPEN>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:151
+msgid "Create an event when a file or directory is opened."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:151 build/C/man7/fanotify.7:283
+#, no-wrap
+msgid "B<FAN_OPEN_PERM>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:159
+msgid ""
+"Create an event when a permission to open a file or directory is requested. "
+"An fanotify file descriptor created with B<FAN_CLASS_PRE_CONTENT> or "
+"B<FAN_CLASS_CONTENT> is required."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:159 build/C/man7/fanotify.7:274
+#, no-wrap
+msgid "B<FAN_ACCESS_PERM>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:167
+msgid ""
+"Create an event when a permission to read a file or directory is requested. "
+"An fanotify file descriptor created with B<FAN_CLASS_PRE_CONTENT> or "
+"B<FAN_CLASS_CONTENT> is required."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:167
+#, no-wrap
+msgid "B<FAN_ONDIR>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:176
+msgid ""
+"Create events for directories\\(emfor example, when B<opendir>(2), "
+"B<readdir>(2) (but see BUGS), and B<closedir>(2) are called. Without this "
+"flag, only events for files are created."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:176
+#, no-wrap
+msgid "B<FAN_EVENT_ON_CHILD>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:184
+msgid ""
+"Events for the immediate children of marked directories shall be created. "
+"The flag has no effect when marking mounts. Note that events are not "
+"generated for children of the subdirectories of marked directories. To "
+"monitor complete directory trees it is necessary to mark the relevant mount."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:186
+msgid "The following composed value is defined:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:186 build/C/man7/fanotify.7:290
+#, no-wrap
+msgid "B<FAN_CLOSE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:190
+msgid "A file is closed (B<FAN_CLOSE_WRITE>|B<FAN_CLOSE_NOWRITE>)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:195
+msgid ""
+"The filesystem object to be marked is determined by the file descriptor "
+"I<dirfd> and the pathname specified in I<pathname>:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:201
+msgid "If I<pathname> is NULL, I<dirfd> defines the filesystem object to be marked."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:209
+msgid ""
+"If I<pathname> is NULL, and I<dirfd> takes the special value B<AT_FDCWD>, "
+"the current working directory is to be marked."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:215
+msgid ""
+"If I<pathname> is absolute, it defines the filesystem object to be marked, "
+"and I<dirfd> is ignored."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:226
+msgid ""
+"If I<pathname> is relative, and I<dirfd> does not have the value "
+"B<AT_FDCWD>, then the filesystem object to be marked is determined by "
+"interpreting I<pathname> relative the directory referred to by I<dirfd>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:236
+msgid ""
+"If I<pathname> is relative, and I<dirfd> has the value B<AT_FDCWD,> then the "
+"filesystem object to be marked is determined by interpreting I<pathname> "
+"relative the current working directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:243
+msgid ""
+"On success, B<fanotify_mark>() returns 0. On error, -1 is returned, and "
+"I<errno> is set to indicate the error."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:248
+msgid "An invalid file descriptor was passed in I<fanotify_fd>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:257
+msgid ""
+"An invalid value was passed in I<flags> or I<mask>, or I<fanotify_fd> was "
+"not an fanotify file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:265
+msgid ""
+"The fanotify file descriptor was opened with B<FAN_CLASS_NOTIF> and mask "
+"contains a flag for permission events (B<FAN_OPEN_PERM> or "
+"B<FAN_ACCESS_PERM>)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:274
+msgid ""
+"The filesystem object indicated by I<dirfd> and I<pathname> does not exist. "
+"This error also occurs when trying to remove a mark from an object which is "
+"not marked."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:277
+msgid "The necessary memory could not be allocated."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:283
+msgid ""
+"The number of marks exceeds the limit of 8192 and the B<FAN_UNLIMITED_MARKS> "
+"flag was not specified when the fanotify file descriptor was created with "
+"B<fanotify_init>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:289
+msgid ""
+"This kernel does not implement B<fanotify_mark>(). The fanotify API is "
+"available only if the kernel was configured with B<CONFIG_FANOTIFY>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:289
+#, no-wrap
+msgid "B<ENOTDIR>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:299
+msgid ""
+"I<flags> contains B<FAN_MARK_ONLYDIR>, and I<dirfd> and I<pathname> do not "
+"specify a directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:303
+msgid ""
+"B<fanotify_mark>() was introduced in version 2.6.36 of the Linux kernel and "
+"enabled in version 2.6.37."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:308 build/C/man7/fanotify.7:490
+msgid "As of Linux 3.15, the following bugs exist:"
+msgstr ""
+
+#. FIXME: Patch is in next-20140424.
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:318
+msgid ""
+"If I<flags> contains B<FAN_MARK_FLUSH>, I<dirfd> and I<pathname> must "
+"specify a valid filesystem object, even though this object is not used."
+msgstr ""
+
+#. FIXME: Patch is in next-20140424.
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:324
+msgid "B<readdir>(2) does not generate a B<FAN_ACCESS> event."
+msgstr ""
+
+#. FIXME: Patch proposed.
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:332
+msgid ""
+"If B<fanotify_mark>(2) is called with B<FAN_MARK_FLUSH,> I<flags> is not "
+"checked for invalid values."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:335
+msgid "B<fanotify_init>(2), B<fanotify>(7)"
+msgstr ""
+
+#. type: TH
+#: build/C/man7/fanotify.7:25
+#, no-wrap
+msgid "FANOTIFY"
+msgstr ""
+
+#. type: TH
+#: build/C/man7/fanotify.7:25
+#, no-wrap
+msgid "2014-05-21"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:28
+msgid "fanotify - monitoring filesystem events"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:37
+msgid ""
+"The fanotify API provides notification and interception of filesystem "
+"events. Use cases include virus scanning and hierarchical storage "
+"management. Currently, only a limited set of events is supported. In "
+"particular, there is no support for create, delete, and move events. (See "
+"B<inotify>(7) for details of an API that does notify those events.)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:44
+msgid ""
+"Additional capabilities compared to the B<inotify>(7) API include the "
+"ability to monitor all of the objects in a mounted filesystem, the ability "
+"to make access permission decisions, and the possibility to read or modify "
+"files before access by other applications."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:52
+msgid ""
+"The following system calls are used with this API: B<fanotify_init>(2), "
+"B<fanotify_mark>(2), B<read>(2), B<write>(2), and B<close>(2)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:52
+#, no-wrap
+msgid "fanotify_init(), fanotify_mark(), and notification groups"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:57
+msgid ""
+"The B<fanotify_init>(2) system call creates and initializes an fanotify "
+"notification group and returns a file descriptor referring to it."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:61
+msgid ""
+"An fanotify notification group is a kernel-internal object that holds a list "
+"of files, directories, and mount points for which events shall be created."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:72
+msgid ""
+"For each entry in an fanotify notification group, two bit masks exist: the "
+"I<mark> mask and the I<ignore> mask. The mark mask defines file activities "
+"for which an event shall be created. The ignore mask defines activities for "
+"which no event shall be generated. Having these two types of masks permits "
+"a mount point or directory to be marked for receiving events, while at the "
+"same time ignoring events for specific objects under that mount point or "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:78
+msgid ""
+"The B<fanotify_mark>(2) system call adds a file, directory, or mount to a "
+"notification group and specifies which events shall be reported (or "
+"ignored), or removes or modifies such an entry."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:91
+msgid ""
+"A possible usage of the ignore mask is for a file cache. Events of interest "
+"for a file cache are modification of a file and closing of the same. Hence, "
+"the cached directory or mount point is to be marked to receive these "
+"events. After receiving the first event informing that a file has been "
+"modified, the corresponding cache entry will be invalidated. No further "
+"modification events for this file are of interest until the file is closed. "
+"Hence, the modify event can be added to the ignore mask. Upon receiving the "
+"close event, the modify event can be removed from the ignore mask and the "
+"file cache entry can be updated."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:98
+msgid ""
+"The entries in the fanotify notification groups refer to files and "
+"directories via their inode number and to mounts via their mount ID. If "
+"files or directories are renamed or moved, the respective entries survive. "
+"If files or directories are deleted or mounts are unmounted, the "
+"corresponding entries are deleted."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:98
+#, no-wrap
+msgid "The event queue"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:107
+msgid ""
+"As events occur on the filesystem objects monitored by a notification group, "
+"the fanotify system generates events that are collected in a queue. These "
+"events can then be read (using B<read>(2) or similar) from the fanotify "
+"file descriptor returned by B<fanotify_init>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:121
+msgid ""
+"Two types of events are generated: I<notification> events and I<permission> "
+"events. Notification events are merely informative and require no action to "
+"be taken by the receiving application except for closing the file descriptor "
+"passed in the event (see below). Permission events are requests to the "
+"receiving application to decide whether permission for a file access shall "
+"be granted. For these events, the recipient must write a response which "
+"decides whether access is granted or not."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:128
+msgid ""
+"An event is removed from the event queue of the fanotify group when it has "
+"been read. Permission events that have been read are kept in an internal "
+"list of the fanotify group until either a permission decision has been taken "
+"by writing to the fanotify file descriptor or the fanotify file descriptor "
+"is closed."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:128
+#, no-wrap
+msgid "Reading fanotify events"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:140
+msgid ""
+"Calling B<read>(2) for the file descriptor returned by B<fanotify_init>(2) "
+"blocks (if the flag B<FAN_NONBLOCK> is not specified in the call to "
+"B<fanotify_init>(2)) until either a file event occurs or the call is "
+"interrupted by a signal (see B<signal>(7))."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:144
+msgid ""
+"After a successful B<read>(2), the read buffer contains one or more of the "
+"following structures:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:156
+#, no-wrap
+msgid ""
+"struct fanotify_event_metadata {\n"
+" __u32 event_len;\n"
+" __u8 vers;\n"
+" __u8 reserved;\n"
+" __u16 metadata_len;\n"
+" __aligned_u64 mask;\n"
+" __s32 fd;\n"
+" __s32 pid;\n"
+"};\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:163
+msgid ""
+"For performance reasons, it is recommended to use a large buffer size (for "
+"example, 4096 bytes), so that multiple events can be retrieved by a single "
+"B<read>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:168
+msgid ""
+"The return value of B<read>(2) is the number of bytes placed in the buffer, "
+"or -1 in case of an error (but see BUGS)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:172
+msgid "The fields of the I<fanotify_event_metadata> structure are as follows:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:172
+#, no-wrap
+msgid "I<event_len>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:182
+msgid ""
+"This is the length of the data for the current event and the offset to the "
+"next event in the buffer. In the current implementation, the value of "
+"I<event_len> is always B<FAN_EVENT_METADATA_LEN>. However, the API is "
+"designed to allow variable-length structures to be returned in the future."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:182
+#, no-wrap
+msgid "I<vers>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:191
+msgid ""
+"This field holds a version number for the structure. It must be compared to "
+"B<FANOTIFY_METADATA_VERSION> to verify that the structures returned at "
+"runtime match the structures defined at compile time. In case of a "
+"mismatch, the application should abandon trying to use the fanotify file "
+"descriptor."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:191
+#, no-wrap
+msgid "I<reserved>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:194
+msgid "This field is not used."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:194
+#, no-wrap
+msgid "I<metadata_len>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:200
+msgid ""
+"This is the length of the structure. The field was introduced to facilitate "
+"the implementation of optional headers per event type. No such optional "
+"headers exist in the current implementation."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:200
+#, no-wrap
+msgid "I<mask>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:203
+msgid "This is a bit mask describing the event (see below)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:203 build/C/man7/fanotify.7:360
+#, no-wrap
+msgid "I<fd>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:211
+msgid ""
+"This is an open file descriptor for the object being accessed, or "
+"B<FAN_NOFD> if a queue overflow occurred. The file descriptor can be used "
+"to access the contents of the monitored file or directory. The reading "
+"application is responsible for closing this file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:224
+msgid ""
+"When calling B<fanotify_init>(2), the caller may specify (via the "
+"I<event_f_flags> argument) various file status flags that are to be set on "
+"the open file description that corresponds to this file descriptor. In "
+"addition, the (kernel-internal) B<FMODE_NONOTIFY> file status flag is set "
+"on the open file description. This flag suppresses fanotify event "
+"generation. Hence, when the receiver of the fanotify event accesses the "
+"notified file or directory using this file descriptor, no additional events "
+"will be created."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:224
+#, no-wrap
+msgid "I<pid>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:232
+msgid ""
+"This is the ID of the process that caused the event. A program listening to "
+"fanotify events can compare this PID to the PID returned by B<getpid>(2), to "
+"determine whether the event is caused by the listener itself, or is due to a "
+"file access by another process."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:242
+msgid ""
+"The bit mask in I<mask> indicates which events have occurred for a single "
+"filesystem object. Multiple bits may be set in this mask, if more than one "
+"event occurred for the monitored filesystem object. In particular, "
+"consecutive events for the same filesystem object and originating from the "
+"same process may be merged into a single event, with the exception that two "
+"permission events are never merged into one queue entry."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:246
+msgid "The bits that may appear in I<mask> are as follows:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:249
+msgid "A file or a directory (but see BUGS) was accessed (read)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:252
+msgid "A file or a directory was opened."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:255
+msgid "A file was modified."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:262
+msgid "A file that was opened for writing (B<O_WRONLY> or B<O_RDWR>) was closed."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:267
+msgid "A file or directory that was opened read-only (B<O_RDONLY>) was closed."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:267
+#, no-wrap
+msgid "B<FAN_Q_OVERFLOW>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:274
+msgid ""
+"The event queue exceeded the limit of 16384 entries. This limit can be "
+"overridden by specifying the B<FAN_UNLIMITED_QUEUE> flag when calling "
+"B<fanotify_init>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:283
+msgid ""
+"An application wants to read a file or directory, for example using "
+"B<read>(2) or B<readdir>(2). The reader must write a response (as "
+"described below) that determines whether the permission to access the "
+"filesystem object shall be granted."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:288
+msgid ""
+"An application wants to open a file or directory. The reader must write a "
+"response that determines whether the permission to open the filesystem "
+"object shall be granted."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:290
+msgid "To check for any close event, the following bit mask may be used:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:294
+msgid "A file was closed. This is a synonym for:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:296
+#, no-wrap
+msgid " FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:301
+msgid ""
+"The following macros are provided to iterate over a buffer containing "
+"fanotify event metadata returned by a B<read>(2) from an fanotify file "
+"descriptor:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:301
+#, no-wrap
+msgid "B<FAN_EVENT_OK(meta, len)>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:310
+msgid ""
+"This macro checks the remaining length I<len> of the buffer I<meta> against "
+"the length of the metadata structure and the I<event_len> field of the first "
+"metadata structure in the buffer."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:310
+#, no-wrap
+msgid "B<FAN_EVENT_NEXT(meta, len)>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:329
+msgid ""
+"This macro uses the length indicated in the I<event_len> field of the "
+"metadata structure pointed to by I<meta> to calculate the address of the "
+"next metadata structure that follows I<meta>. I<len> is the number of bytes "
+"of metadata that currently remain in the buffer. The macro returns a "
+"pointer to the next metadata structure that follows I<meta>, and reduces "
+"I<len> by the number of bytes in the the metadata structure that has been "
+"skipped over (i.e., it subtracts I<meta-E<gt>event_len> from I<len>)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:331
+msgid "In addition, there is:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:331
+#, no-wrap
+msgid "B<FAN_EVENT_METADATA_LEN>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:337
+msgid ""
+"This macro returns the size (in bytes) of the structure "
+"I<fanotify_event_metadata>. This is the minimum size (and currently the "
+"only size) of any event metadata."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:337
+#, no-wrap
+msgid "Monitoring an fanotify file descriptor for events"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:344
+msgid ""
+"When an fanotify event occurs, the fanotify file descriptor indicates as "
+"readable when passed to B<epoll>(7), B<poll>(2), or B<select>(2)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:344
+#, no-wrap
+msgid "Dealing with permission events"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:349
+msgid ""
+"For permission events, the application must B<write>(2) a structure of the "
+"following form to the fanotify file descriptor:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:356
+#, no-wrap
+msgid ""
+"struct fanotify_response {\n"
+" __s32 fd;\n"
+" __u32 response;\n"
+"};\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:360
+msgid "The fields of this structure are as follows:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:364
+msgid "This is the file descriptor from the structure I<fanotify_event_metadata>."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:364
+#, no-wrap
+msgid "I<response>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:372
+msgid ""
+"This field indicates whether or not the permission is to be granted. Its "
+"value must be either B<FAN_ALLOW> to allow the file operation or B<FAN_DENY> "
+"to deny the file operation."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:376
+msgid ""
+"If access is denied, the requesting application call will receive an "
+"B<EPERM> error."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:376
+#, no-wrap
+msgid "Closing the fanotify file descriptor"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:384
+msgid ""
+"When all file descriptors referring to the fanotify notification group are "
+"closed, the fanotify group is released and its resources are freed for reuse "
+"by the kernel. Upon B<close>(2), outstanding permission events will be set "
+"to allowed."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:384
+#, no-wrap
+msgid "/proc/[pid]/fdinfo"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:394
+msgid ""
+"The file I</proc/[pid]/fdinfo/[fd]> contains information about fanotify "
+"marks for file descriptor I<fd> of process I<pid>. See the kernel source "
+"file I<Documentation/filesystems/proc.txt> for details."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:399
+msgid ""
+"In addition to the usual errors for B<read>(2), the following errors can "
+"occur when reading from the fanotify file descriptor:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:402
+msgid "The buffer is too small to hold the event."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:409
+msgid ""
+"The per-process limit on the number of open files has been reached. See the "
+"description of B<RLIMIT_NOFILE> in B<getrlimit>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:416
+msgid ""
+"The system-wide limit on the number of open files has been reached. See "
+"I</proc/sys/fs/file-max> in B<proc>(5)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:416
+#, no-wrap
+msgid "B<ETXTBSY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:429
+msgid ""
+"This error is returned by B<read>(2) if B<O_RDWR> or B<O_WRONLY> was "
+"specified in the I<event_f_flags> argument when calling B<fanotify_init>(2) "
+"and an event occurred for a monitored file that is currently being executed."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:433
+msgid ""
+"In addition to the usual errors for B<write>(2), the following errors can "
+"occur when writing to the fanotify file descriptor:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:439
+msgid ""
+"Fanotify access permissions are not enabled in the kernel configuration or "
+"the value of I<response> in the response structure is not valid."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:446
+msgid ""
+"The file descriptor I<fd> in the response structure is not valid. This may "
+"occur when a response for the permission event has already been written."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:450
+msgid ""
+"The fanotify API was introduced in version 2.6.36 of the Linux kernel and "
+"enabled in version 2.6.37. Fdinfo support was added in version 3.8."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:452
+msgid "The fanotify API is Linux-specific."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:459
+msgid ""
+"The fanotify API is available only if the kernel was built with the "
+"B<CONFIG_FANOTIFY> configuration option enabled. In addition, fanotify "
+"permission handling is available only if the "
+"B<CONFIG_FANOTIFY_ACCESS_PERMISSIONS> configuration option is enabled."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:464
+msgid ""
+"Fanotify reports only events that a user-space program triggers through the "
+"filesystem API. As a result, it does not catch remote events that occur on "
+"network filesystems."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:471
+msgid ""
+"The fanotify API does not report file accesses and modifications that may "
+"occur because of B<mmap>(2), B<msync>(2), and B<munmap>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:476
+msgid ""
+"Events for directories are created only if the directory itself is opened, "
+"read, and closed. Adding, removing, or changing children of a marked "
+"directory does not create events for the monitored directory itself."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:484
+msgid ""
+"Fanotify monitoring of directories is not recursive: to monitor "
+"subdirectories under a directory, additional marks must be created. (But "
+"note that the fanotify API provides no way of detecting when a subdirectory "
+"has been created under a marked directory, which makes recursive monitoring "
+"difficult.) Monitoring mounts offers the capability to monitor a whole "
+"directory tree."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:487
+msgid "The event queue can overflow. In this case, events are lost."
+msgstr ""
+
+#. FIXME: A patch was proposed.
+#. type: Plain text
+#: build/C/man7/fanotify.7:499
+msgid ""
+"When an event is generated, no check is made to see whether the user ID of "
+"the receiving process has authorization to read or write the file before "
+"passing a file descriptor for that file. This poses a security risk, when "
+"the B<CAP_SYS_ADMIN> capability is set for programs executed by unprivileged "
+"users."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:509
+msgid ""
+"If a call to B<read>(2) processes multiple events from the fanotify queue "
+"and an error occurs, the return value will be the total length of the events "
+"successfully copied to the user-space buffer before the error occurred. The "
+"return value will not be -1, and I<errno> will not be set. Thus, the "
+"reading application has no way to detect the error."
+msgstr ""
+
+#. type: SH
+#: build/C/man7/fanotify.7:509
+#, no-wrap
+msgid "EXAMPLE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:519
+msgid ""
+"The following program demonstrates the usage of the fanotify API. It marks "
+"the mount point passed as a command-line argument and waits for events of "
+"type B<FAN_PERM_OPEN> and B<FAN_CLOSE_WRITE>. When a permission event "
+"occurs, a B<FAN_ALLOW> response is given."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:529
+msgid ""
+"The following output was recorded while editing the file "
+"I</home/user/temp/notes>. Before the file was opened, a B<FAN_OPEN_PERM> "
+"event occurred. After the file was closed, a B<FAN_CLOSE_WRITE> event "
+"occurred. Execution of the program ends when the user presses the ENTER "
+"key."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:529
+#, no-wrap
+msgid "Example output"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:537
+#, no-wrap
+msgid ""
+"# ./fanotify_example /home\n"
+"Press enter key to terminate.\n"
+"Listening for events.\n"
+"FAN_OPEN_PERM: File /home/user/temp/notes\n"
+"FAN_CLOSE_WRITE: File /home/user/temp/notes\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:539
+#, no-wrap
+msgid "Listening for events stopped.\n"
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:541
+#, no-wrap
+msgid "Program source"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:552
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE /* Needed to get O_LARGEFILE definition */\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>limits.hE<gt>\n"
+"#include E<lt>poll.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>sys/fanotify.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:554
+#, no-wrap
+msgid "/* Read all available fanotify events from the file descriptor 'fd' */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:565
+#, no-wrap
+msgid ""
+"static void\n"
+"handle_events(int fd)\n"
+"{\n"
+" const struct fanotify_event_metadata *metadata;\n"
+" char buf[4096];\n"
+" ssize_t len;\n"
+" char path[PATH_MAX];\n"
+" ssize_t path_len;\n"
+" char procfd_path[PATH_MAX];\n"
+" struct fanotify_response response;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:567
+#, no-wrap
+msgid " /* Loop while events can be read from fanotify file descriptor */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:569
+#, no-wrap
+msgid " for(;;) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:571
+#, no-wrap
+msgid " /* Read some events */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:577
+#, no-wrap
+msgid ""
+" len = read(fd, (void *) &buf, sizeof(buf));\n"
+" if (len == -1 && errno != EAGAIN) {\n"
+" perror(\"read\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:579
+#, no-wrap
+msgid " /* Check if end of available data reached */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:582
+#, no-wrap
+msgid ""
+" if (len E<lt>= 0)\n"
+" break;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:584
+#, no-wrap
+msgid " /* Point to the first event in the buffer */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:586
+#, no-wrap
+msgid " metadata = (struct fanotify_event_metadata *) buf;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:588
+#, no-wrap
+msgid " /* Loop over all events in the buffer */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:590
+#, no-wrap
+msgid " while (FAN_EVENT_OK(metadata, len)) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:592
+#, no-wrap
+msgid " /* Check that run-time and compile-time structures match */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:598
+#, no-wrap
+msgid ""
+" if (metadata-E<gt>vers != FANOTIFY_METADATA_VERSION) {\n"
+" fprintf(stderr,\n"
+" \"Mismatch of fanotify metadata version.\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:602
+#, no-wrap
+msgid ""
+" /* metadata-E<gt>fd contains either FAN_NOFD, indicating a\n"
+" queue overflow, or a file descriptor (a nonnegative\n"
+" integer). Here, we simply ignore queue overflow. */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:604
+#, no-wrap
+msgid " if (metadata-E<gt>fd E<gt>= 0) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:606
+#, no-wrap
+msgid " /* Handle open permission event */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:609
+#, no-wrap
+msgid ""
+" if (metadata-E<gt>mask & FAN_OPEN_PERM) {\n"
+" printf(\"FAN_OPEN_PERM: \");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:611
+#, no-wrap
+msgid " /* Allow file to be opened */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:617
+#, no-wrap
+msgid ""
+" response.fd = metadata-E<gt>fd;\n"
+" response.response = FAN_ALLOW;\n"
+" write(fd, &response,\n"
+" sizeof(struct fanotify_response));\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:619
+#, no-wrap
+msgid " /* Handle closing of writable file event */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:622
+#, no-wrap
+msgid ""
+" if (metadata-E<gt>mask & FAN_CLOSE_WRITE)\n"
+" printf(\"FAN_CLOSE_WRITE: \");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:624
+#, no-wrap
+msgid " /* Retrieve and print pathname of the accessed file */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:633
+#, no-wrap
+msgid ""
+" snprintf(procfd_path, sizeof(procfd_path),\n"
+" \"/proc/self/fd/%d\", metadata-E<gt>fd);\n"
+" path_len = readlink(procfd_path, path,\n"
+" sizeof(path) - 1);\n"
+" if (path_len == -1) {\n"
+" perror(\"readlink\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:636
+#, no-wrap
+msgid ""
+" path[path_len] = '\\e0';\n"
+" printf(\"File %s\\en\", path);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:638
+#, no-wrap
+msgid " /* Close the file descriptor of the event */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:641
+#, no-wrap
+msgid ""
+" close(metadata-E<gt>fd);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:643
+#, no-wrap
+msgid " /* Advance to next event */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:648
+#, no-wrap
+msgid ""
+" metadata = FAN_EVENT_NEXT(metadata, len);\n"
+" }\n"
+" }\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:656
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" char buf;\n"
+" int fd, poll_num;\n"
+" nfds_t nfds;\n"
+" struct pollfd fds[2];\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:658
+#, no-wrap
+msgid " /* Check mount point is supplied */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:663
+#, no-wrap
+msgid ""
+" if (argc != 2) {\n"
+" fprintf(stderr, \"Usage: %s MOUNT\\en\", argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:665
+#, no-wrap
+msgid " printf(\"Press enter key to terminate.\\en\");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:667
+#, no-wrap
+msgid " /* Create the file descriptor for accessing the fanotify API */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:674
+#, no-wrap
+msgid ""
+" fd = fanotify_init(FAN_CLOEXEC | FAN_CLASS_CONTENT | FAN_NONBLOCK,\n"
+" O_RDONLY | O_LARGEFILE);\n"
+" if (fd == -1) {\n"
+" perror(\"fanotify_init\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:679
+#, no-wrap
+msgid ""
+" /* Mark the mount for:\n"
+" - permission events before opening files\n"
+" - notification events after closing a write-enabled\n"
+" file descriptor */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:686
+#, no-wrap
+msgid ""
+" if (fanotify_mark(fd, FAN_MARK_ADD | FAN_MARK_MOUNT,\n"
+" FAN_OPEN_PERM | FAN_CLOSE_WRITE, -1,\n"
+" argv[1]) == -1) {\n"
+" perror(\"fanotify_mark\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:688
+#, no-wrap
+msgid " /* Prepare for polling */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:690
+#, no-wrap
+msgid " nfds = 2;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:692
+#, no-wrap
+msgid " /* Console input */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:695
+#, no-wrap
+msgid ""
+" fds[0].fd = STDIN_FILENO;\n"
+" fds[0].events = POLLIN;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:697
+#, no-wrap
+msgid " /* Fanotify input */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:700
+#, no-wrap
+msgid ""
+" fds[1].fd = fd;\n"
+" fds[1].events = POLLIN;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:702
+#, no-wrap
+msgid " /* This is the loop to wait for incoming events */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:704
+#, no-wrap
+msgid " printf(\"Listening for events.\\en\");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:710
+#, no-wrap
+msgid ""
+" while (1) {\n"
+" poll_num = poll(fds, nfds, -1);\n"
+" if (poll_num == -1) {\n"
+" if (errno == EINTR) /* Interrupted by a signal */\n"
+" continue; /* Restart poll() */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:714
+#, no-wrap
+msgid ""
+" perror(\"poll\"); /* Unexpected error */\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:717
+#, no-wrap
+msgid ""
+" if (poll_num E<gt> 0) {\n"
+" if (fds[0].revents & POLLIN) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:719
+#, no-wrap
+msgid " /* Console input is available: empty stdin and quit */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:724
+#, no-wrap
+msgid ""
+" while (read(STDIN_FILENO, &buf, 1) E<gt> 0 && buf != "
+"'\\en')\n"
+" continue;\n"
+" break;\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:726
+#, no-wrap
+msgid " if (fds[1].revents & POLLIN) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:728
+#, no-wrap
+msgid " /* Fanotify events are available */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:733
+#, no-wrap
+msgid ""
+" handle_events(fd);\n"
+" }\n"
+" }\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:737
+#, no-wrap
+msgid ""
+" printf(\"Listening for events stopped.\\en\");\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:743
+msgid "B<fanotify_init>(2), B<fanotify_mark>(2), B<inotify>(7)"
+msgstr ""
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-06-03 01:29+0900\n"
+"POT-Creation-Date: 2014-06-08 01:15+0900\n"
"PO-Revision-Date: 2014-06-03 07:28+0900\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#. type: TH
#: build/C/man7/inotify.7:26 build/C/man2/inotify_add_watch.2:28
#: build/C/man2/inotify_init.2:29 build/C/man2/inotify_rm_watch.2:27
+#: build/C/man2/fanotify_init.2:24 build/C/man2/fanotify_mark.2:24
+#: build/C/man7/fanotify.7:25
#, no-wrap
msgid "Linux"
msgstr "Linux"
#. type: TH
#: build/C/man7/inotify.7:26 build/C/man2/inotify_add_watch.2:28
#: build/C/man2/inotify_init.2:29 build/C/man2/inotify_rm_watch.2:27
+#: build/C/man2/fanotify_init.2:24 build/C/man2/fanotify_mark.2:24
+#: build/C/man7/fanotify.7:25
#, no-wrap
msgid "Linux Programmer's Manual"
msgstr "Linux Programmer's Manual"
#. type: SH
#: build/C/man7/inotify.7:27 build/C/man2/inotify_add_watch.2:29
#: build/C/man2/inotify_init.2:30 build/C/man2/inotify_rm_watch.2:28
+#: build/C/man2/fanotify_init.2:25 build/C/man2/fanotify_mark.2:25
+#: build/C/man7/fanotify.7:26
#, no-wrap
msgid "NAME"
msgstr "名前"
#. type: SH
#: build/C/man7/inotify.7:29 build/C/man2/inotify_add_watch.2:35
#: build/C/man2/inotify_init.2:39 build/C/man2/inotify_rm_watch.2:36
+#: build/C/man2/fanotify_init.2:33 build/C/man2/fanotify_mark.2:36
+#: build/C/man7/fanotify.7:28
#, no-wrap
msgid "DESCRIPTION"
msgstr "説明"
#. type: IP
#: build/C/man7/inotify.7:39 build/C/man7/inotify.7:50
#: build/C/man7/inotify.7:63 build/C/man7/inotify.7:69
-#: build/C/man7/inotify.7:72
+#: build/C/man7/inotify.7:72 build/C/man2/fanotify_init.2:242
+#: build/C/man2/fanotify_mark.2:195 build/C/man2/fanotify_mark.2:201
+#: build/C/man2/fanotify_mark.2:209 build/C/man2/fanotify_mark.2:215
+#: build/C/man2/fanotify_mark.2:226 build/C/man2/fanotify_mark.2:308
+#: build/C/man2/fanotify_mark.2:318 build/C/man2/fanotify_mark.2:324
+#: build/C/man7/fanotify.7:490 build/C/man7/fanotify.7:499
#, no-wrap
msgid "*"
msgstr "*"
#. type: SH
#: build/C/man7/inotify.7:541 build/C/man2/inotify_add_watch.2:118
#: build/C/man2/inotify_init.2:94 build/C/man2/inotify_rm_watch.2:67
+#: build/C/man2/fanotify_init.2:233 build/C/man2/fanotify_mark.2:299
+#: build/C/man7/fanotify.7:446
#, no-wrap
msgid "VERSIONS"
msgstr "バージョン"
#. type: SH
#: build/C/man7/inotify.7:549 build/C/man2/inotify_add_watch.2:120
#: build/C/man2/inotify_init.2:101 build/C/man2/inotify_rm_watch.2:69
+#: build/C/man2/fanotify_init.2:237 build/C/man2/fanotify_mark.2:303
+#: build/C/man7/fanotify.7:450
#, no-wrap
msgid "CONFORMING TO"
msgstr "準拠"
msgstr "inotify API は Linux 独自のものである。"
#. type: SH
-#: build/C/man7/inotify.7:551
+#: build/C/man7/inotify.7:551 build/C/man7/fanotify.7:452
#, no-wrap
msgid "NOTES"
msgstr "注意"
"めるかを返す。"
#. type: SS
-#: build/C/man7/inotify.7:612
+#: build/C/man7/inotify.7:612 build/C/man7/fanotify.7:459
#, no-wrap
msgid "Limitations and caveats"
msgstr "制限と警告"
"る。"
#. type: SH
-#: build/C/man7/inotify.7:728
+#: build/C/man7/inotify.7:728 build/C/man2/fanotify_init.2:239
+#: build/C/man2/fanotify_mark.2:305 build/C/man7/fanotify.7:487
#, no-wrap
msgid "BUGS"
msgstr "バグ"
#. type: SH
#: build/C/man7/inotify.7:755 build/C/man2/inotify_add_watch.2:122
#: build/C/man2/inotify_init.2:103 build/C/man2/inotify_rm_watch.2:71
+#: build/C/man2/fanotify_init.2:252 build/C/man2/fanotify_mark.2:332
+#: build/C/man7/fanotify.7:738
#, no-wrap
msgid "SEE ALSO"
msgstr "関連項目"
"B<inotifywait>(1), B<inotifywatch>(1), B<inotify_add_watch>(2), "
"B<inotify_init>(2), B<inotify_init1>(2), B<inotify_rm_watch>(2), B<read>(2), "
"B<stat>(2), B<fanotify>(7)"
-msgstr "B<inotifywait>(1), B<inotifywatch>(1), B<inotify_add_watch>(2), B<inotify_init>(2), B<inotify_init1>(2), B<inotify_rm_watch>(2), B<read>(2), B<stat>(2), B<fanotify>(7)"
+msgstr ""
+"B<inotifywait>(1), B<inotifywatch>(1), B<inotify_add_watch>(2), "
+"B<inotify_init>(2), B<inotify_init1>(2), B<inotify_rm_watch>(2), B<read>(2), "
+"B<stat>(2), B<fanotify>(7)"
#. type: Plain text
#: build/C/man7/inotify.7:768
#. type: SH
#: build/C/man7/inotify.7:768 build/C/man2/inotify_add_watch.2:126
#: build/C/man2/inotify_init.2:107 build/C/man2/inotify_rm_watch.2:75
+#: build/C/man2/fanotify_init.2:255 build/C/man2/fanotify_mark.2:335
+#: build/C/man7/fanotify.7:743
#, no-wrap
msgid "COLOPHON"
msgstr "この文書について"
#. type: Plain text
#: build/C/man7/inotify.7:776 build/C/man2/inotify_add_watch.2:134
#: build/C/man2/inotify_init.2:115 build/C/man2/inotify_rm_watch.2:83
+#: build/C/man2/fanotify_init.2:263 build/C/man2/fanotify_mark.2:343
+#: build/C/man7/fanotify.7:751
msgid ""
"This page is part of release 3.67 of the Linux I<man-pages> project. A "
"description of the project, information about reporting bugs, and the latest "
#. type: SH
#: build/C/man2/inotify_add_watch.2:31 build/C/man2/inotify_init.2:32
-#: build/C/man2/inotify_rm_watch.2:30
+#: build/C/man2/inotify_rm_watch.2:30 build/C/man2/fanotify_init.2:27
+#: build/C/man2/fanotify_mark.2:28
#, no-wrap
msgid "SYNOPSIS"
msgstr "書式"
#. type: SH
#: build/C/man2/inotify_add_watch.2:79 build/C/man2/inotify_init.2:74
-#: build/C/man2/inotify_rm_watch.2:48
+#: build/C/man2/inotify_rm_watch.2:48 build/C/man2/fanotify_init.2:199
+#: build/C/man2/fanotify_mark.2:236
#, no-wrap
msgid "RETURN VALUE"
msgstr "返り値"
#. type: SH
#: build/C/man2/inotify_add_watch.2:86 build/C/man2/inotify_init.2:79
-#: build/C/man2/inotify_rm_watch.2:55
+#: build/C/man2/inotify_rm_watch.2:55 build/C/man2/fanotify_init.2:206
+#: build/C/man2/fanotify_mark.2:243 build/C/man7/fanotify.7:394
#, no-wrap
msgid "ERRORS"
msgstr "エラー"
#. type: TP
#: build/C/man2/inotify_add_watch.2:90 build/C/man2/inotify_rm_watch.2:56
+#: build/C/man2/fanotify_mark.2:244
#, no-wrap
msgid "B<EBADF>"
msgstr "B<EBADF>"
#. type: TP
#: build/C/man2/inotify_add_watch.2:97 build/C/man2/inotify_init.2:80
-#: build/C/man2/inotify_rm_watch.2:60
+#: build/C/man2/inotify_rm_watch.2:60 build/C/man2/fanotify_init.2:207
+#: build/C/man2/fanotify_mark.2:248 build/C/man2/fanotify_mark.2:257
+#: build/C/man7/fanotify.7:399 build/C/man7/fanotify.7:433
#, no-wrap
msgid "B<EINVAL>"
msgstr "B<EINVAL>"
msgstr "I<pathname> が長過ぎる。"
#. type: TP
-#: build/C/man2/inotify_add_watch.2:106
+#: build/C/man2/inotify_add_watch.2:106 build/C/man2/fanotify_mark.2:265
+#: build/C/man7/fanotify.7:439
#, no-wrap
msgid "B<ENOENT>"
msgstr "B<ENOENT>"
#. type: TP
#: build/C/man2/inotify_add_watch.2:111 build/C/man2/inotify_init.2:91
+#: build/C/man2/fanotify_init.2:219 build/C/man2/fanotify_mark.2:274
#, no-wrap
msgid "B<ENOMEM>"
msgstr "B<ENOMEM>"
msgstr "カーネルメモリが十分になかった。"
#. type: TP
-#: build/C/man2/inotify_add_watch.2:114
+#: build/C/man2/inotify_add_watch.2:114 build/C/man2/fanotify_mark.2:277
#, no-wrap
msgid "B<ENOSPC>"
msgstr "B<ENOSPC>"
#. type: Plain text
#: build/C/man2/inotify_add_watch.2:122 build/C/man2/inotify_rm_watch.2:71
+#: build/C/man2/fanotify_init.2:239 build/C/man2/fanotify_mark.2:305
msgid "This system call is Linux-specific."
msgstr "このシステムコールは Linux 独自である。"
msgstr "(B<inotify_init1>()) 無効な値が I<flags> に指定された。"
#. type: TP
-#: build/C/man2/inotify_init.2:85
+#: build/C/man2/inotify_init.2:85 build/C/man2/fanotify_init.2:216
+#: build/C/man7/fanotify.7:402
#, no-wrap
msgid "B<EMFILE>"
msgstr "B<EMFILE>"
msgstr "inotify インスタンスの総数がユーザ単位の上限に達していた。"
#. type: TP
-#: build/C/man2/inotify_init.2:88
+#: build/C/man2/inotify_init.2:88 build/C/man7/fanotify.7:409
#, no-wrap
msgid "B<ENFILE>"
msgstr "B<ENFILE>"
#: build/C/man2/inotify_rm_watch.2:75
msgid "B<inotify_add_watch>(2), B<inotify_init>(2), B<inotify>(7)"
msgstr "B<inotify_add_watch>(2), B<inotify_init>(2), B<inotify>(7)"
+
+#. type: TH
+#: build/C/man2/fanotify_init.2:24
+#, fuzzy, no-wrap
+#| msgid "INOTIFY_INIT"
+msgid "FANOTIFY_INIT"
+msgstr "INOTIFY_INIT"
+
+#. type: TH
+#: build/C/man2/fanotify_init.2:24
+#, fuzzy, no-wrap
+#| msgid "2014-05-08"
+msgid "2014-05-18"
+msgstr "2014-05-08"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:27
+#, fuzzy
+#| msgid "inotify_init, inotify_init1 - initialize an inotify instance"
+msgid "fanotify_init - create and initialize fanotify group"
+msgstr "inotify_init, inotify_init1 - inotify インスタンスを初期化する"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:29
+#, fuzzy
+#| msgid "B<#include E<lt>sys/inotify.hE<gt>>"
+msgid "B<#include E<lt>fcntl.hE<gt>>"
+msgstr "B<#include E<lt>sys/inotify.hE<gt>>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:31
+#, fuzzy
+#| msgid "B<#include E<lt>sys/inotify.hE<gt>>"
+msgid "B<#include E<lt>sys/fanotify.hE<gt>>"
+msgstr "B<#include E<lt>sys/inotify.hE<gt>>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:33
+#, fuzzy
+#| msgid "B<int inotify_rm_watch(int >I<fd>B<, int >I<wd>B<);>"
+msgid ""
+"B<int fanotify_init(unsigned int >I<flags>B<, unsigned int "
+">I<event_f_flags>B<);>"
+msgstr "B<int inotify_rm_watch(int >I<fd>B<, int >I<wd>B<);>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:36 build/C/man2/fanotify_mark.2:39
+#, fuzzy
+#| msgid "For an overview of the inotify API, see B<inotify>(7)."
+msgid "For an overview of the fanotify API, see B<fanotify>(7)."
+msgstr "inotify API の概要については B<inotify>(7) を参照。"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:40
+#, fuzzy
+#| msgid ""
+#| "B<inotify_init>() initializes a new inotify instance and returns a file "
+#| "descriptor associated with a new inotify event queue."
+msgid ""
+"B<fanotify_init>() initializes a new fanotify group and returns a file "
+"descriptor for the event queue associated with the group."
+msgstr ""
+"B<inotify_init>() は、新規の inotify インスタンスを初期化し、作成された "
+"inotify イベントキュー に対応するファイルディスクリプタを返す。"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:51
+msgid ""
+"The file descriptor is used in calls to B<fanotify_mark>(2) to specify the "
+"files, directories, and mounts for which fanotify events shall be created. "
+"These events are received by reading from the file descriptor. Some events "
+"are only informative, indicating that a file has been accessed. Other "
+"events can be used to determine whether another application is permitted to "
+"access a file or directory. Permission to access filesystem objects is "
+"granted by writing to the file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:54
+msgid ""
+"Multiple programs may be using the fanotify interface at the same time to "
+"monitor the same files."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:58
+msgid ""
+"In the current implementation, the number of fanotify groups per user is "
+"limited to 128. This limit cannot be overridden."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:67
+msgid ""
+"Calling B<fanotify_init>() requires the B<CAP_SYS_ADMIN> capability. This "
+"constraint might be relaxed in future versions of the API. Therefore, "
+"certain additional capability checks have been implemented as indicated "
+"below."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:73
+msgid ""
+"The I<flags> argument contains a multi-bit field defining the notification "
+"class of the listening application and further single bit fields specifying "
+"the behavior of the file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:77
+msgid ""
+"If multiple listeners for permission events exist, the notification class is "
+"used to establish the sequence in which the listeners receive the events."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:80
+msgid ""
+"Only one of the following notification classes may be specified in I<flags>:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:80
+#, no-wrap
+msgid "B<FAN_CLASS_PRE_CONTENT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:88
+msgid ""
+"This value allows the receipt of events notifying that a file has been "
+"accessed and events for permission decisions if a file may be accessed. It "
+"is intended for event listeners that need to access files before they "
+"contain their final data. This notification class might be used by "
+"hierarchical storage managers, for example."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:88
+#, no-wrap
+msgid "B<FAN_CLASS_CONTENT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:96
+msgid ""
+"This value allows the receipt of events notifying that a file has been "
+"accessed and events for permission decisions if a file may be accessed. It "
+"is intended for event listeners that need to access files when they already "
+"contain their final content. This notification class might be used by "
+"malware detection programs, for example."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:96
+#, no-wrap
+msgid "B<FAN_CLASS_NOTIF>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:103
+msgid ""
+"This is the default value. It does not need to be specified. This value "
+"only allows the receipt of events notifying that a file has been accessed. "
+"Permission decisions before the file is accessed are not possible."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:111
+msgid ""
+"Listeners with different notification classes will receive events in the "
+"order B<FAN_CLASS_PRE_CONTENT>, B<FAN_CLASS_CONTENT>, B<FAN_CLASS_NOTIF>. "
+"The order of notification for listeners in the same notification class is "
+"undefined."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:114
+#, fuzzy
+#| msgid ""
+#| "The following bits may be set in the I<mask> field returned by B<read>(2):"
+msgid "The following bits can additionally be set in I<flags>:"
+msgstr "以下のビットが B<read>(2) で返される I<mask> フィールドに設定される:"
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:114
+#, fuzzy, no-wrap
+#| msgid "B<IN_CLOEXEC>"
+msgid "B<FAN_CLOEXEC>"
+msgstr "B<IN_CLOEXEC>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:123
+#, fuzzy
+#| msgid ""
+#| "Set the close-on-exec (B<FD_CLOEXEC>) flag on the new file descriptor. "
+#| "See the description of the B<O_CLOEXEC> flag in B<open>(2) for reasons "
+#| "why this may be useful."
+msgid ""
+"Set the close-on-exec flag (B<FD_CLOEXEC>) on the new file descriptor. See "
+"the description of the B<O_CLOEXEC> flag in B<open>(2)."
+msgstr ""
+"新しいファイル・ディスクリプターに対して close-on-exec (B<FD_CLOEXEC>) フラ"
+"グをセットする。 このフラグが役に立つ理由については、 B<open>(2) の "
+"B<O_CLOEXEC> フラグの説明を参照のこと。"
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:123
+#, fuzzy, no-wrap
+#| msgid "B<IN_NONBLOCK>"
+msgid "B<FAN_NONBLOCK>"
+msgstr "B<IN_NONBLOCK>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:133
+msgid ""
+"Enable the nonblocking flag (B<O_NONBLOCK>) for the file descriptor. "
+"Reading from the file descriptor will not block. Instead, if no data is "
+"available, B<read>(2) will fail with the error B<EAGAIN>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:133
+#, no-wrap
+msgid "B<FAN_UNLIMITED_QUEUE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:139
+msgid ""
+"Remove the limit of 16384 events for the event queue. Use of this flag "
+"requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:139
+#, no-wrap
+msgid "B<FAN_UNLIMITED_MARKS>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:145
+msgid ""
+"Remove the limit of 8192 marks. Use of this flag requires the "
+"B<CAP_SYS_ADMIN> capability."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:158
+msgid ""
+"The I<event_f_flags> argument defines the file status flags that will be set "
+"on the open file descriptions that are created for fanotify events. For "
+"details of these flags, see the description of the I<flags> values in "
+"B<open>(2). I<event_f_flags> includes a multi-bit field for the access "
+"mode. This field can take the following values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:158
+#, no-wrap
+msgid "B<O_RDONLY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:161
+msgid "This value allows only read access."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:161
+#, no-wrap
+msgid "B<O_WRONLY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:164
+msgid "This value allows only write access."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:164
+#, no-wrap
+msgid "B<O_RDWR>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:167
+msgid "This value allows read and write access."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:171
+msgid ""
+"Additional bits can be set in I<event_f_flags>. The most useful values are:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:171
+#, fuzzy, no-wrap
+#| msgid "B<EMFILE>"
+msgid "B<O_LARGEFILE>"
+msgstr "B<EMFILE>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:178
+msgid ""
+"Enable support for files exceeding 2 GB. Failing to set this flag will "
+"result in an B<EOVERFLOW> error when trying to open a large file which is "
+"monitored by an fanotify group on a 32-bit system."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:178
+#, fuzzy, no-wrap
+#| msgid "B<IN_CLOEXEC>"
+msgid "B<O_CLOEXEC>"
+msgstr "B<IN_CLOEXEC>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:186
+#, fuzzy
+#| msgid ""
+#| "Set the close-on-exec (B<FD_CLOEXEC>) flag on the new file descriptor. "
+#| "See the description of the B<O_CLOEXEC> flag in B<open>(2) for reasons "
+#| "why this may be useful."
+msgid ""
+"Enable the close-on-exec flag for the file descriptor. See the description "
+"of the B<O_CLOEXEC> flag in B<open>(2) for reasons why this may be useful."
+msgstr ""
+"新しいファイル・ディスクリプターに対して close-on-exec (B<FD_CLOEXEC>) フラ"
+"グをセットする。 このフラグが役に立つ理由については、 B<open>(2) の "
+"B<O_CLOEXEC> フラグの説明を参照のこと。"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:199
+msgid ""
+"The following are also allowable: B<O_APPEND>, B<O_DSYNC>, B<O_NOATIME>, "
+"B<O_NONBLOCK>, and B<O_SYNC>. Specifying any other flag in I<event_f_flags> "
+"yields the error B<EINVAL> (but see BUGS)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:206
+#, fuzzy
+#| msgid ""
+#| "On success, these system calls return a new file descriptor. On error, "
+#| "-1 is returned, and I<errno> is set to indicate the error."
+msgid ""
+"On success, B<fanotify_init>() returns a new file descriptor. On error, -1 "
+"is returned, and I<errno> is set to indicate the error."
+msgstr ""
+"成功すると、これらのシステムコールは新しいファイルディスクリプタを返す。 エ"
+"ラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:216
+msgid ""
+"An invalid value was passed in I<flags> or I<event_f_flags>. "
+"B<FAN_ALL_INIT_FLAGS> defines all allowable bits for I<flags>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:219
+msgid "The number of fanotify groups for this user exceeds 128."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:222
+msgid "The allocation of memory for the notification group failed."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:222 build/C/man2/fanotify_mark.2:283
+#, fuzzy, no-wrap
+#| msgid "B<ENOSPC>"
+msgid "B<ENOSYS>"
+msgstr "B<ENOSPC>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:228
+msgid ""
+"This kernel does not implement B<fanotify_init>(). The fanotify API is "
+"available only if the kernel was configured with B<CONFIG_FANOTIFY>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_init.2:228
+#, no-wrap
+msgid "B<EPERM>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:233
+msgid ""
+"The operation is not permitted because the caller lacks the B<CAP_SYS_ADMIN> "
+"capability."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:237
+msgid ""
+"B<fanotify_init>() was introduced in version 2.6.36 of the Linux kernel and "
+"enabled in version 2.6.37."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:242
+msgid "As of Linux 3.15, the following bug exists:"
+msgstr ""
+
+#. FIXME: Patch accepted to mm tree.
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:252
+msgid ""
+"The I<event_f_flags> argument is not checked for invalid flags. Flags that "
+"are intended only for internal use, such as B<FMODE_EXEC>, can be set, and "
+"will consequently be set for the file descriptors returned when reading from "
+"the fanotify file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_init.2:255
+#, fuzzy
+#| msgid "B<inotify_init>(2), B<inotify_rm_watch>(2), B<inotify>(7)"
+msgid "B<fanotify_mark>(2), B<fanotify>(7)"
+msgstr "B<inotify_init>(2), B<inotify_rm_watch>(2), B<inotify>(7)"
+
+#. type: TH
+#: build/C/man2/fanotify_mark.2:24
+#, fuzzy, no-wrap
+#| msgid "INOTIFY_RM_WATCH"
+msgid "FANOTIFY_MARK"
+msgstr "INOTIFY_RM_WATCH"
+
+#. type: TH
+#: build/C/man2/fanotify_mark.2:24
+#, fuzzy, no-wrap
+#| msgid "2014-03-28"
+msgid "2014-04-24"
+msgstr "2014-03-28"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:28
+msgid ""
+"fanotify_mark - add, remove, or modify an fanotify mark on a filesystem "
+"object"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:31
+#, fuzzy, no-wrap
+#| msgid "B<#include E<lt>sys/inotify.hE<gt>>\n"
+msgid "B<#include E<lt>sys/fanotify.hE<gt>>\n"
+msgstr "B<#include E<lt>sys/inotify.hE<gt>>\n"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:35
+#, no-wrap
+msgid ""
+"B<int fanotify_mark(int >I<fanotify_fd>B<, unsigned int >I<flags>B<,>\n"
+"B< uint64_t >I<mask>B<, int >I<dirfd>B<, const char *>I<pathname>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:44
+msgid ""
+"B<fanotify_mark>(2) adds, removes, or modifies an fanotify mark on a "
+"filesystem object. The caller must have read permission on the filesystem "
+"object that is to be marked."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:49
+msgid ""
+"The I<fanotify_fd> argument is a file descriptor returned by "
+"B<fanotify_init>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:53
+msgid ""
+"I<flags> is a bit mask describing the modification to perform. It must "
+"include exactly one of the following values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:53
+#, fuzzy, no-wrap
+#| msgid "B<IN_MASK_ADD>"
+msgid "B<FAN_MARK_ADD>"
+msgstr "B<IN_MASK_ADD>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:62
+msgid ""
+"The events in I<mask> will be added to the mark mask (or to the ignore "
+"mask). I<mask> must be nonempty or the error B<EINVAL> will occur."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:62
+#, fuzzy, no-wrap
+#| msgid "B<IN_MOVE>"
+msgid "B<FAN_MARK_REMOVE>"
+msgstr "B<IN_MOVE>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:71
+msgid ""
+"The events in argument I<mask> will be removed from the mark mask (or from "
+"the ignore mask). I<mask> must be nonempty or the error B<EINVAL> will "
+"occur."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:71
+#, no-wrap
+msgid "B<FAN_MARK_FLUSH>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:86
+msgid ""
+"Remove either all mount or all non-mount marks from the fanotify group. If "
+"I<flag> contains B<FAN_MARK_MOUNT>, all marks for mounts are removed from "
+"the group. Otherwise, all marks for directories and files are removed. No "
+"flag other than B<FAN_MARK_MOUNT> can be used in conjunction with "
+"B<FAN_MARK_FLUSH>. I<mask> is ignored."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:90
+msgid ""
+"If none of the values above is specified, or more than one is specified, the "
+"call fails with the error B<EINVAL>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:94
+msgid ""
+"In addition, zero or more of the following values may be ORed into I<flags>:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:94
+#, no-wrap
+msgid "B<FAN_MARK_DONT_FOLLOW>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:105
+msgid ""
+"If I<pathname> is a symbolic link, mark the link itself, rather than the "
+"file to which it refers. (By default, B<fanotify_mark>() dereferences "
+"I<pathname> if it is a symbolic link.)"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:105
+#, fuzzy, no-wrap
+#| msgid "B<IN_MASK_ADD>"
+msgid "B<FAN_MARK_ONLYDIR>"
+msgstr "B<IN_MASK_ADD>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:110
+msgid ""
+"If the filesystem object to be marked is not a directory, the error "
+"B<ENOTDIR> shall be raised."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:110
+#, fuzzy, no-wrap
+#| msgid "B<IN_UNMOUNT>"
+msgid "B<FAN_MARK_MOUNT>"
+msgstr "B<IN_UNMOUNT>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:121
+msgid ""
+"Mark the mount point specified by I<pathname>. If I<pathname> is not itself "
+"a mount point, the mount point containing I<pathname> will be marked. All "
+"directories, subdirectories, and the contained files of the mount point will "
+"be monitored."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:121
+#, fuzzy, no-wrap
+#| msgid "B<IN_IGNORED>"
+msgid "B<FAN_MARK_IGNORED_MASK>"
+msgstr "B<IN_IGNORED>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:126
+msgid ""
+"The events in I<mask> shall be added to or removed from the ignore mask."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:126
+#, no-wrap
+msgid "B<FAN_MARK_IGNORED_SURV_MODIFY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:132
+msgid ""
+"The ignore mask shall survive modify events. If this flag is not set, the "
+"ignore mask is cleared when a modify event occurs for the ignored file or "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:136
+msgid ""
+"I<mask> defines which events shall be listened for (or which shall be "
+"ignored). It is a bit mask composed of the following values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:136 build/C/man7/fanotify.7:246
+#, fuzzy, no-wrap
+#| msgid "B<IN_ACCESS> (*)"
+msgid "B<FAN_ACCESS>"
+msgstr "B<IN_ACCESS> (*)"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:139
+msgid ""
+"Create an event when a file or directory (but see BUGS) is accessed (read)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:139 build/C/man7/fanotify.7:252
+#, fuzzy, no-wrap
+#| msgid "B<IN_MODIFY> (*)"
+msgid "B<FAN_MODIFY>"
+msgstr "B<IN_MODIFY> (*)"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:142
+msgid "Create an event when a file is modified (write)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:142 build/C/man7/fanotify.7:255
+#, fuzzy, no-wrap
+#| msgid "B<IN_CLOSE_WRITE> (*)"
+msgid "B<FAN_CLOSE_WRITE>"
+msgstr "B<IN_CLOSE_WRITE> (*)"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:145
+msgid "Create an event when a writable file is closed."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:145 build/C/man7/fanotify.7:262
+#, fuzzy, no-wrap
+#| msgid "B<IN_CLOSE_NOWRITE> (*)"
+msgid "B<FAN_CLOSE_NOWRITE>"
+msgstr "B<IN_CLOSE_NOWRITE> (*)"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:148
+msgid "Create an event when a read-only file or directory is closed."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:148 build/C/man7/fanotify.7:249
+#, fuzzy, no-wrap
+#| msgid "B<IN_OPEN> (*)"
+msgid "B<FAN_OPEN>"
+msgstr "B<IN_OPEN> (*)"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:151
+msgid "Create an event when a file or directory is opened."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:151 build/C/man7/fanotify.7:283
+#, fuzzy, no-wrap
+#| msgid "B<IN_OPEN> (*)"
+msgid "B<FAN_OPEN_PERM>"
+msgstr "B<IN_OPEN> (*)"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:159
+msgid ""
+"Create an event when a permission to open a file or directory is requested. "
+"An fanotify file descriptor created with B<FAN_CLASS_PRE_CONTENT> or "
+"B<FAN_CLASS_CONTENT> is required."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:159 build/C/man7/fanotify.7:274
+#, fuzzy, no-wrap
+#| msgid "B<IN_ACCESS> (*)"
+msgid "B<FAN_ACCESS_PERM>"
+msgstr "B<IN_ACCESS> (*)"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:167
+msgid ""
+"Create an event when a permission to read a file or directory is requested. "
+"An fanotify file descriptor created with B<FAN_CLASS_PRE_CONTENT> or "
+"B<FAN_CLASS_CONTENT> is required."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:167
+#, fuzzy, no-wrap
+#| msgid "B<IN_ISDIR>"
+msgid "B<FAN_ONDIR>"
+msgstr "B<IN_ISDIR>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:176
+msgid ""
+"Create events for directories\\(emfor example, when B<opendir>(2), "
+"B<readdir>(2) (but see BUGS), and B<closedir>(2) are called. Without this "
+"flag, only events for files are created."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:176
+#, no-wrap
+msgid "B<FAN_EVENT_ON_CHILD>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:184
+msgid ""
+"Events for the immediate children of marked directories shall be created. "
+"The flag has no effect when marking mounts. Note that events are not "
+"generated for children of the subdirectories of marked directories. To "
+"monitor complete directory trees it is necessary to mark the relevant mount."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:186
+msgid "The following composed value is defined:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:186 build/C/man7/fanotify.7:290
+#, fuzzy, no-wrap
+#| msgid "B<IN_CLOSE>"
+msgid "B<FAN_CLOSE>"
+msgstr "B<IN_CLOSE>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:190
+#, fuzzy
+#| msgid "Equates to B<IN_CLOSE_WRITE | IN_CLOSE_NOWRITE>."
+msgid "A file is closed (B<FAN_CLOSE_WRITE>|B<FAN_CLOSE_NOWRITE>)."
+msgstr "B<IN_CLOSE_WRITE | IN_CLOSE_NOWRITE> と等価。"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:195
+msgid ""
+"The filesystem object to be marked is determined by the file descriptor "
+"I<dirfd> and the pathname specified in I<pathname>:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:201
+msgid ""
+"If I<pathname> is NULL, I<dirfd> defines the filesystem object to be marked."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:209
+msgid ""
+"If I<pathname> is NULL, and I<dirfd> takes the special value B<AT_FDCWD>, "
+"the current working directory is to be marked."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:215
+msgid ""
+"If I<pathname> is absolute, it defines the filesystem object to be marked, "
+"and I<dirfd> is ignored."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:226
+msgid ""
+"If I<pathname> is relative, and I<dirfd> does not have the value "
+"B<AT_FDCWD>, then the filesystem object to be marked is determined by "
+"interpreting I<pathname> relative the directory referred to by I<dirfd>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:236
+msgid ""
+"If I<pathname> is relative, and I<dirfd> has the value B<AT_FDCWD,> then the "
+"filesystem object to be marked is determined by interpreting I<pathname> "
+"relative the current working directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:243
+#, fuzzy
+#| msgid ""
+#| "On success, B<inotify_rm_watch>() returns zero. On error, -1 is "
+#| "returned and I<errno> is set to indicate the cause of the error."
+msgid ""
+"On success, B<fanotify_mark>() returns 0. On error, -1 is returned, and "
+"I<errno> is set to indicate the error."
+msgstr ""
+"成功すると、B<inotify_rm_watch>() は 0 を返す。 エラーの場合、-1 を返し、 "
+"I<errno> をエラーの原因を示す値に設定する。"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:248
+msgid "An invalid file descriptor was passed in I<fanotify_fd>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:257
+#, fuzzy
+#| msgid ""
+#| "The given event mask contains no valid events; or I<fd> is not an inotify "
+#| "file descriptor."
+msgid ""
+"An invalid value was passed in I<flags> or I<mask>, or I<fanotify_fd> was "
+"not an fanotify file descriptor."
+msgstr ""
+"指定されたイベントマスクに有効なイベントが含まれていない。 もしくは I<fd> が "
+"inotify ファイルディスクリプタではない。"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:265
+msgid ""
+"The fanotify file descriptor was opened with B<FAN_CLASS_NOTIF> and mask "
+"contains a flag for permission events (B<FAN_OPEN_PERM> or "
+"B<FAN_ACCESS_PERM>)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:274
+msgid ""
+"The filesystem object indicated by I<dirfd> and I<pathname> does not exist. "
+"This error also occurs when trying to remove a mark from an object which is "
+"not marked."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:277
+msgid "The necessary memory could not be allocated."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:283
+msgid ""
+"The number of marks exceeds the limit of 8192 and the B<FAN_UNLIMITED_MARKS> "
+"flag was not specified when the fanotify file descriptor was created with "
+"B<fanotify_init>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:289
+msgid ""
+"This kernel does not implement B<fanotify_mark>(). The fanotify API is "
+"available only if the kernel was configured with B<CONFIG_FANOTIFY>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/fanotify_mark.2:289
+#, fuzzy, no-wrap
+#| msgid "B<ENOENT>"
+msgid "B<ENOTDIR>"
+msgstr "B<ENOENT>"
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:299
+msgid ""
+"I<flags> contains B<FAN_MARK_ONLYDIR>, and I<dirfd> and I<pathname> do not "
+"specify a directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:303
+msgid ""
+"B<fanotify_mark>() was introduced in version 2.6.36 of the Linux kernel and "
+"enabled in version 2.6.37."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:308 build/C/man7/fanotify.7:490
+msgid "As of Linux 3.15, the following bugs exist:"
+msgstr ""
+
+#. FIXME: Patch is in next-20140424.
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:318
+msgid ""
+"If I<flags> contains B<FAN_MARK_FLUSH>, I<dirfd> and I<pathname> must "
+"specify a valid filesystem object, even though this object is not used."
+msgstr ""
+
+#. FIXME: Patch is in next-20140424.
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:324
+msgid "B<readdir>(2) does not generate a B<FAN_ACCESS> event."
+msgstr ""
+
+#. FIXME: Patch proposed.
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:332
+msgid ""
+"If B<fanotify_mark>(2) is called with B<FAN_MARK_FLUSH,> I<flags> is not "
+"checked for invalid values."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/fanotify_mark.2:335
+#, fuzzy
+#| msgid "B<inotify_init>(2), B<inotify_rm_watch>(2), B<inotify>(7)"
+msgid "B<fanotify_init>(2), B<fanotify>(7)"
+msgstr "B<inotify_init>(2), B<inotify_rm_watch>(2), B<inotify>(7)"
+
+#. type: TH
+#: build/C/man7/fanotify.7:25
+#, fuzzy, no-wrap
+#| msgid "INOTIFY"
+msgid "FANOTIFY"
+msgstr "INOTIFY"
+
+#. type: TH
+#: build/C/man7/fanotify.7:25
+#, fuzzy, no-wrap
+#| msgid "2014-05-08"
+msgid "2014-05-21"
+msgstr "2014-05-08"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:28
+#, fuzzy
+#| msgid "inotify - monitoring filesystem events"
+msgid "fanotify - monitoring filesystem events"
+msgstr "inotify - ファイルシステムイベントを監視する"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:37
+msgid ""
+"The fanotify API provides notification and interception of filesystem "
+"events. Use cases include virus scanning and hierarchical storage "
+"management. Currently, only a limited set of events is supported. In "
+"particular, there is no support for create, delete, and move events. (See "
+"B<inotify>(7) for details of an API that does notify those events.)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:44
+msgid ""
+"Additional capabilities compared to the B<inotify>(7) API include the "
+"ability to monitor all of the objects in a mounted filesystem, the ability "
+"to make access permission decisions, and the possibility to read or modify "
+"files before access by other applications."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:52
+msgid ""
+"The following system calls are used with this API: B<fanotify_init>(2), "
+"B<fanotify_mark>(2), B<read>(2), B<write>(2), and B<close>(2)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:52
+#, no-wrap
+msgid "fanotify_init(), fanotify_mark(), and notification groups"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:57
+#, fuzzy
+#| msgid ""
+#| "B<inotify_init>() initializes a new inotify instance and returns a file "
+#| "descriptor associated with a new inotify event queue."
+msgid ""
+"The B<fanotify_init>(2) system call creates and initializes an fanotify "
+"notification group and returns a file descriptor referring to it."
+msgstr ""
+"B<inotify_init>() は、新規の inotify インスタンスを初期化し、作成された "
+"inotify イベントキュー に対応するファイルディスクリプタを返す。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:61
+msgid ""
+"An fanotify notification group is a kernel-internal object that holds a list "
+"of files, directories, and mount points for which events shall be created."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:72
+msgid ""
+"For each entry in an fanotify notification group, two bit masks exist: the "
+"I<mark> mask and the I<ignore> mask. The mark mask defines file activities "
+"for which an event shall be created. The ignore mask defines activities for "
+"which no event shall be generated. Having these two types of masks permits "
+"a mount point or directory to be marked for receiving events, while at the "
+"same time ignoring events for specific objects under that mount point or "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:78
+msgid ""
+"The B<fanotify_mark>(2) system call adds a file, directory, or mount to a "
+"notification group and specifies which events shall be reported (or "
+"ignored), or removes or modifies such an entry."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:91
+msgid ""
+"A possible usage of the ignore mask is for a file cache. Events of interest "
+"for a file cache are modification of a file and closing of the same. Hence, "
+"the cached directory or mount point is to be marked to receive these "
+"events. After receiving the first event informing that a file has been "
+"modified, the corresponding cache entry will be invalidated. No further "
+"modification events for this file are of interest until the file is closed. "
+"Hence, the modify event can be added to the ignore mask. Upon receiving the "
+"close event, the modify event can be removed from the ignore mask and the "
+"file cache entry can be updated."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:98
+msgid ""
+"The entries in the fanotify notification groups refer to files and "
+"directories via their inode number and to mounts via their mount ID. If "
+"files or directories are renamed or moved, the respective entries survive. "
+"If files or directories are deleted or mounts are unmounted, the "
+"corresponding entries are deleted."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:98
+#, no-wrap
+msgid "The event queue"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:107
+msgid ""
+"As events occur on the filesystem objects monitored by a notification group, "
+"the fanotify system generates events that are collected in a queue. These "
+"events can then be read (using B<read>(2) or similar) from the fanotify "
+"file descriptor returned by B<fanotify_init>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:121
+msgid ""
+"Two types of events are generated: I<notification> events and I<permission> "
+"events. Notification events are merely informative and require no action to "
+"be taken by the receiving application except for closing the file descriptor "
+"passed in the event (see below). Permission events are requests to the "
+"receiving application to decide whether permission for a file access shall "
+"be granted. For these events, the recipient must write a response which "
+"decides whether access is granted or not."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:128
+msgid ""
+"An event is removed from the event queue of the fanotify group when it has "
+"been read. Permission events that have been read are kept in an internal "
+"list of the fanotify group until either a permission decision has been taken "
+"by writing to the fanotify file descriptor or the fanotify file descriptor "
+"is closed."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:128
+#, fuzzy, no-wrap
+#| msgid "inotify events"
+msgid "Reading fanotify events"
+msgstr "inotify イベント"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:140
+msgid ""
+"Calling B<read>(2) for the file descriptor returned by B<fanotify_init>(2) "
+"blocks (if the flag B<FAN_NONBLOCK> is not specified in the call to "
+"B<fanotify_init>(2)) until either a file event occurs or the call is "
+"interrupted by a signal (see B<signal>(7))."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:144
+#, fuzzy
+#| msgid ""
+#| "Each successful B<read>(2) returns a buffer containing one or more of "
+#| "the following structures:"
+msgid ""
+"After a successful B<read>(2), the read buffer contains one or more of the "
+"following structures:"
+msgstr ""
+"B<read>(2) が成功すると、以下の構造体を 1 つ以上含むバッファが返される:"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:156
+#, no-wrap
+msgid ""
+"struct fanotify_event_metadata {\n"
+" __u32 event_len;\n"
+" __u8 vers;\n"
+" __u8 reserved;\n"
+" __u16 metadata_len;\n"
+" __aligned_u64 mask;\n"
+" __s32 fd;\n"
+" __s32 pid;\n"
+"};\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:163
+msgid ""
+"For performance reasons, it is recommended to use a large buffer size (for "
+"example, 4096 bytes), so that multiple events can be retrieved by a single "
+"B<read>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:168
+msgid ""
+"The return value of B<read>(2) is the number of bytes placed in the buffer, "
+"or -1 in case of an error (but see BUGS)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:172
+msgid "The fields of the I<fanotify_event_metadata> structure are as follows:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:172
+#, no-wrap
+msgid "I<event_len>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:182
+msgid ""
+"This is the length of the data for the current event and the offset to the "
+"next event in the buffer. In the current implementation, the value of "
+"I<event_len> is always B<FAN_EVENT_METADATA_LEN>. However, the API is "
+"designed to allow variable-length structures to be returned in the future."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:182
+#, no-wrap
+msgid "I<vers>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:191
+msgid ""
+"This field holds a version number for the structure. It must be compared to "
+"B<FANOTIFY_METADATA_VERSION> to verify that the structures returned at "
+"runtime match the structures defined at compile time. In case of a "
+"mismatch, the application should abandon trying to use the fanotify file "
+"descriptor."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:191
+#, no-wrap
+msgid "I<reserved>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:194
+msgid "This field is not used."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:194
+#, no-wrap
+msgid "I<metadata_len>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:200
+msgid ""
+"This is the length of the structure. The field was introduced to facilitate "
+"the implementation of optional headers per event type. No such optional "
+"headers exist in the current implementation."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:200
+#, no-wrap
+msgid "I<mask>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:203
+#, fuzzy
+#| msgid ""
+#| "I<mask> contains bits that describe the event that occurred (see below)."
+msgid "This is a bit mask describing the event (see below)."
+msgstr ""
+"I<mask> には発生したイベント (下記参照) を記述するためのビットが含まれる。"
+
+#. type: TP
+#: build/C/man7/fanotify.7:203 build/C/man7/fanotify.7:360
+#, no-wrap
+msgid "I<fd>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:211
+msgid ""
+"This is an open file descriptor for the object being accessed, or "
+"B<FAN_NOFD> if a queue overflow occurred. The file descriptor can be used "
+"to access the contents of the monitored file or directory. The reading "
+"application is responsible for closing this file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:224
+msgid ""
+"When calling B<fanotify_init>(2), the caller may specify (via the "
+"I<event_f_flags> argument) various file status flags that are to be set on "
+"the open file description that corresponds to this file descriptor. In "
+"addition, the (kernel-internal) B<FMODE_NONOTIFY> file status flag is set "
+"on the open file description. This flag suppresses fanotify event "
+"generation. Hence, when the receiver of the fanotify event accesses the "
+"notified file or directory using this file descriptor, no additional events "
+"will be created."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:224
+#, no-wrap
+msgid "I<pid>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:232
+msgid ""
+"This is the ID of the process that caused the event. A program listening to "
+"fanotify events can compare this PID to the PID returned by B<getpid>(2), to "
+"determine whether the event is caused by the listener itself, or is due to a "
+"file access by another process."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:242
+msgid ""
+"The bit mask in I<mask> indicates which events have occurred for a single "
+"filesystem object. Multiple bits may be set in this mask, if more than one "
+"event occurred for the monitored filesystem object. In particular, "
+"consecutive events for the same filesystem object and originating from the "
+"same process may be merged into a single event, with the exception that two "
+"permission events are never merged into one queue entry."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:246
+msgid "The bits that may appear in I<mask> are as follows:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:249
+msgid "A file or a directory (but see BUGS) was accessed (read)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:252
+#, fuzzy
+#| msgid "Watched file/directory was itself moved."
+msgid "A file or a directory was opened."
+msgstr "監視対象のディレクトリまたはファイル自身が移動された。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:255
+#, fuzzy
+#| msgid "File was opened."
+msgid "A file was modified."
+msgstr "ファイルがオープンされた。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:262
+#, fuzzy
+#| msgid "File not opened for writing was closed."
+msgid ""
+"A file that was opened for writing (B<O_WRONLY> or B<O_RDWR>) was closed."
+msgstr "書き込み以外のためにオープンされたファイルがクローズされた。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:267
+msgid ""
+"A file or directory that was opened read-only (B<O_RDONLY>) was closed."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:267
+#, fuzzy, no-wrap
+#| msgid "B<IN_Q_OVERFLOW>"
+msgid "B<FAN_Q_OVERFLOW>"
+msgstr "B<IN_Q_OVERFLOW>"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:274
+msgid ""
+"The event queue exceeded the limit of 16384 entries. This limit can be "
+"overridden by specifying the B<FAN_UNLIMITED_QUEUE> flag when calling "
+"B<fanotify_init>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:283
+msgid ""
+"An application wants to read a file or directory, for example using "
+"B<read>(2) or B<readdir>(2). The reader must write a response (as "
+"described below) that determines whether the permission to access the "
+"filesystem object shall be granted."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:288
+msgid ""
+"An application wants to open a file or directory. The reader must write a "
+"response that determines whether the permission to open the filesystem "
+"object shall be granted."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:290
+msgid "To check for any close event, the following bit mask may be used:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:294
+msgid "A file was closed. This is a synonym for:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:296
+#, fuzzy, no-wrap
+#| msgid "Equates to B<IN_CLOSE_WRITE | IN_CLOSE_NOWRITE>."
+msgid " FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE\n"
+msgstr "B<IN_CLOSE_WRITE | IN_CLOSE_NOWRITE> と等価。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:301
+msgid ""
+"The following macros are provided to iterate over a buffer containing "
+"fanotify event metadata returned by a B<read>(2) from an fanotify file "
+"descriptor:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:301
+#, no-wrap
+msgid "B<FAN_EVENT_OK(meta, len)>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:310
+msgid ""
+"This macro checks the remaining length I<len> of the buffer I<meta> against "
+"the length of the metadata structure and the I<event_len> field of the first "
+"metadata structure in the buffer."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:310
+#, no-wrap
+msgid "B<FAN_EVENT_NEXT(meta, len)>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:329
+msgid ""
+"This macro uses the length indicated in the I<event_len> field of the "
+"metadata structure pointed to by I<meta> to calculate the address of the "
+"next metadata structure that follows I<meta>. I<len> is the number of bytes "
+"of metadata that currently remain in the buffer. The macro returns a "
+"pointer to the next metadata structure that follows I<meta>, and reduces "
+"I<len> by the number of bytes in the the metadata structure that has been "
+"skipped over (i.e., it subtracts I<meta-E<gt>event_len> from I<len>)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:331
+msgid "In addition, there is:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:331
+#, no-wrap
+msgid "B<FAN_EVENT_METADATA_LEN>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:337
+msgid ""
+"This macro returns the size (in bytes) of the structure "
+"I<fanotify_event_metadata>. This is the minimum size (and currently the "
+"only size) of any event metadata."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:337
+#, fuzzy, no-wrap
+#| msgid "Reading events from an inotify file descriptor"
+msgid "Monitoring an fanotify file descriptor for events"
+msgstr "inotify ファイルディスクリプタからのイベントの読み出し"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:344
+msgid ""
+"When an fanotify event occurs, the fanotify file descriptor indicates as "
+"readable when passed to B<epoll>(7), B<poll>(2), or B<select>(2)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:344
+#, fuzzy, no-wrap
+#| msgid "Dealing with rename() events"
+msgid "Dealing with permission events"
+msgstr "rename() イベントの取り扱い"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:349
+msgid ""
+"For permission events, the application must B<write>(2) a structure of the "
+"following form to the fanotify file descriptor:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:356
+#, no-wrap
+msgid ""
+"struct fanotify_response {\n"
+" __s32 fd;\n"
+" __u32 response;\n"
+"};\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:360
+msgid "The fields of this structure are as follows:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:364
+msgid ""
+"This is the file descriptor from the structure I<fanotify_event_metadata>."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/fanotify.7:364
+#, no-wrap
+msgid "I<response>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:372
+msgid ""
+"This field indicates whether or not the permission is to be granted. Its "
+"value must be either B<FAN_ALLOW> to allow the file operation or B<FAN_DENY> "
+"to deny the file operation."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:376
+msgid ""
+"If access is denied, the requesting application call will receive an "
+"B<EPERM> error."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:376
+#, fuzzy, no-wrap
+#| msgid "Reading events from an inotify file descriptor"
+msgid "Closing the fanotify file descriptor"
+msgstr "inotify ファイルディスクリプタからのイベントの読み出し"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:384
+#, fuzzy
+#| msgid ""
+#| "When all file descriptors referring to an inotify instance have been "
+#| "closed (using B<close>(2)), the underlying object and its resources are "
+#| "freed for reuse by the kernel; all associated watches are automatically "
+#| "freed."
+msgid ""
+"When all file descriptors referring to the fanotify notification group are "
+"closed, the fanotify group is released and its resources are freed for reuse "
+"by the kernel. Upon B<close>(2), outstanding permission events will be set "
+"to allowed."
+msgstr ""
+"inotify インスタンスを指している 全てのファイルディスクリプタが (B<close>(2) "
+"を使って) クローズされた場合、 その下層にあるオブジェクトとそのリソースは、 "
+"カーネルで再利用するために解放される。 関連が切られた監視対象は自動的に解放さ"
+"れる。"
+
+#. type: SS
+#: build/C/man7/fanotify.7:384
+#, no-wrap
+msgid "/proc/[pid]/fdinfo"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:394
+msgid ""
+"The file I</proc/[pid]/fdinfo/[fd]> contains information about fanotify "
+"marks for file descriptor I<fd> of process I<pid>. See the kernel source "
+"file I<Documentation/filesystems/proc.txt> for details."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:399
+msgid ""
+"In addition to the usual errors for B<read>(2), the following errors can "
+"occur when reading from the fanotify file descriptor:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:402
+msgid "The buffer is too small to hold the event."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:409
+msgid ""
+"The per-process limit on the number of open files has been reached. See the "
+"description of B<RLIMIT_NOFILE> in B<getrlimit>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:416
+#, fuzzy
+#| msgid ""
+#| "The system limit on the total number of file descriptors has been reached."
+msgid ""
+"The system-wide limit on the number of open files has been reached. See I</"
+"proc/sys/fs/file-max> in B<proc>(5)."
+msgstr "inotify インスタンスの総数がシステムの上限に達していた。"
+
+#. type: TP
+#: build/C/man7/fanotify.7:416
+#, no-wrap
+msgid "B<ETXTBSY>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:429
+msgid ""
+"This error is returned by B<read>(2) if B<O_RDWR> or B<O_WRONLY> was "
+"specified in the I<event_f_flags> argument when calling B<fanotify_init>(2) "
+"and an event occurred for a monitored file that is currently being executed."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:433
+msgid ""
+"In addition to the usual errors for B<write>(2), the following errors can "
+"occur when writing to the fanotify file descriptor:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:439
+msgid ""
+"Fanotify access permissions are not enabled in the kernel configuration or "
+"the value of I<response> in the response structure is not valid."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:446
+msgid ""
+"The file descriptor I<fd> in the response structure is not valid. This may "
+"occur when a response for the permission event has already been written."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:450
+msgid ""
+"The fanotify API was introduced in version 2.6.36 of the Linux kernel and "
+"enabled in version 2.6.37. Fdinfo support was added in version 3.8."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:452
+#, fuzzy
+#| msgid "The inotify API is Linux-specific."
+msgid "The fanotify API is Linux-specific."
+msgstr "inotify API は Linux 独自のものである。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:459
+msgid ""
+"The fanotify API is available only if the kernel was built with the "
+"B<CONFIG_FANOTIFY> configuration option enabled. In addition, fanotify "
+"permission handling is available only if the "
+"B<CONFIG_FANOTIFY_ACCESS_PERMISSIONS> configuration option is enabled."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:464
+#, fuzzy
+#| msgid ""
+#| "Inotify reports only events that a user-space program triggers through "
+#| "the filesystem API. As a result, it does not catch remote events that "
+#| "occur on network filesystems. (Applications must fall back to polling "
+#| "the filesystem to catch such events.) Furthermore, various pseudo-"
+#| "filesystems such as I</proc>, I</sys>, and I</dev/pts> are not "
+#| "monitorable with inotify."
+msgid ""
+"Fanotify reports only events that a user-space program triggers through the "
+"filesystem API. As a result, it does not catch remote events that occur on "
+"network filesystems."
+msgstr ""
+"inotify は、ファイルシステム API 経由でユーザー空間プログラムがきっかけとなっ"
+"たイベントだけを報告する。 結果として、 inotify はネットワークファイルシステ"
+"ムで発生したリモートのイベントを捉えることはできない (このようなイベントを捉"
+"えるにはアプリケーションはファイルシステムをポーリングする必要がある)。 さら"
+"に、 I</proc>, I</sys>, I</dev/pts> といったいくつかの疑似ファイルシステムは "
+"inotify で監視することができない。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:471
+#, fuzzy
+#| msgid ""
+#| "The inotify API does not report file accesses and modifications that may "
+#| "occur because of B<mmap>(2) and B<msync>(2)."
+msgid ""
+"The fanotify API does not report file accesses and modifications that may "
+"occur because of B<mmap>(2), B<msync>(2), and B<munmap>(2)."
+msgstr ""
+"inotify API は B<mmap>(2) と B<msync>(2) により起こったファイルのアクセスと変"
+"更を報告しない。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:476
+msgid ""
+"Events for directories are created only if the directory itself is opened, "
+"read, and closed. Adding, removing, or changing children of a marked "
+"directory does not create events for the monitored directory itself."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:484
+#, fuzzy
+#| msgid ""
+#| "Inotify monitoring of directories is not recursive: to monitor "
+#| "subdirectories under a directory, additional watches must be created. "
+#| "This can take a significant amount time for large directory trees."
+msgid ""
+"Fanotify monitoring of directories is not recursive: to monitor "
+"subdirectories under a directory, additional marks must be created. (But "
+"note that the fanotify API provides no way of detecting when a subdirectory "
+"has been created under a marked directory, which makes recursive monitoring "
+"difficult.) Monitoring mounts offers the capability to monitor a whole "
+"directory tree."
+msgstr ""
+"inotify によるディレクトリの監視は再帰的に行われない: あるディレクトリ以下"
+"の\n"
+"サブディレクトリを監視する場合、 監視対象を追加で作成しなければならない。\n"
+"大きなディレクトリツリーの場合には、この作業にかなり時間がかかることがある。"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:487
+msgid "The event queue can overflow. In this case, events are lost."
+msgstr ""
+
+#. FIXME: A patch was proposed.
+#. type: Plain text
+#: build/C/man7/fanotify.7:499
+msgid ""
+"When an event is generated, no check is made to see whether the user ID of "
+"the receiving process has authorization to read or write the file before "
+"passing a file descriptor for that file. This poses a security risk, when "
+"the B<CAP_SYS_ADMIN> capability is set for programs executed by unprivileged "
+"users."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:509
+msgid ""
+"If a call to B<read>(2) processes multiple events from the fanotify queue "
+"and an error occurs, the return value will be the total length of the events "
+"successfully copied to the user-space buffer before the error occurred. The "
+"return value will not be -1, and I<errno> will not be set. Thus, the "
+"reading application has no way to detect the error."
+msgstr ""
+
+#. type: SH
+#: build/C/man7/fanotify.7:509
+#, no-wrap
+msgid "EXAMPLE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:519
+msgid ""
+"The following program demonstrates the usage of the fanotify API. It marks "
+"the mount point passed as a command-line argument and waits for events of "
+"type B<FAN_PERM_OPEN> and B<FAN_CLOSE_WRITE>. When a permission event "
+"occurs, a B<FAN_ALLOW> response is given."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:529
+msgid ""
+"The following output was recorded while editing the file I</home/user/temp/"
+"notes>. Before the file was opened, a B<FAN_OPEN_PERM> event occurred. "
+"After the file was closed, a B<FAN_CLOSE_WRITE> event occurred. Execution "
+"of the program ends when the user presses the ENTER key."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:529
+#, fuzzy, no-wrap
+#| msgid "Examples"
+msgid "Example output"
+msgstr "例"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:537
+#, no-wrap
+msgid ""
+"# ./fanotify_example /home\n"
+"Press enter key to terminate.\n"
+"Listening for events.\n"
+"FAN_OPEN_PERM: File /home/user/temp/notes\n"
+"FAN_CLOSE_WRITE: File /home/user/temp/notes\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:539
+#, no-wrap
+msgid "Listening for events stopped.\n"
+msgstr ""
+
+#. type: SS
+#: build/C/man7/fanotify.7:541
+#, no-wrap
+msgid "Program source"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:552
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE /* Needed to get O_LARGEFILE definition */\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>limits.hE<gt>\n"
+"#include E<lt>poll.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>sys/fanotify.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:554
+#, fuzzy, no-wrap
+#| msgid "Reading events from an inotify file descriptor"
+msgid "/* Read all available fanotify events from the file descriptor 'fd' */\n"
+msgstr "inotify ファイルディスクリプタからのイベントの読み出し"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:565
+#, no-wrap
+msgid ""
+"static void\n"
+"handle_events(int fd)\n"
+"{\n"
+" const struct fanotify_event_metadata *metadata;\n"
+" char buf[4096];\n"
+" ssize_t len;\n"
+" char path[PATH_MAX];\n"
+" ssize_t path_len;\n"
+" char procfd_path[PATH_MAX];\n"
+" struct fanotify_response response;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:567
+#, fuzzy, no-wrap
+#| msgid "Reading events from an inotify file descriptor"
+msgid " /* Loop while events can be read from fanotify file descriptor */\n"
+msgstr "inotify ファイルディスクリプタからのイベントの読み出し"
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:569
+#, no-wrap
+msgid " for(;;) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:571
+#, no-wrap
+msgid " /* Read some events */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:577
+#, no-wrap
+msgid ""
+" len = read(fd, (void *) &buf, sizeof(buf));\n"
+" if (len == -1 && errno != EAGAIN) {\n"
+" perror(\"read\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:579
+#, no-wrap
+msgid " /* Check if end of available data reached */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:582
+#, no-wrap
+msgid ""
+" if (len E<lt>= 0)\n"
+" break;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:584
+#, no-wrap
+msgid " /* Point to the first event in the buffer */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:586
+#, no-wrap
+msgid " metadata = (struct fanotify_event_metadata *) buf;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:588
+#, no-wrap
+msgid " /* Loop over all events in the buffer */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:590
+#, no-wrap
+msgid " while (FAN_EVENT_OK(metadata, len)) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:592
+#, no-wrap
+msgid " /* Check that run-time and compile-time structures match */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:598
+#, no-wrap
+msgid ""
+" if (metadata-E<gt>vers != FANOTIFY_METADATA_VERSION) {\n"
+" fprintf(stderr,\n"
+" \"Mismatch of fanotify metadata version.\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:602
+#, no-wrap
+msgid ""
+" /* metadata-E<gt>fd contains either FAN_NOFD, indicating a\n"
+" queue overflow, or a file descriptor (a nonnegative\n"
+" integer). Here, we simply ignore queue overflow. */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:604
+#, no-wrap
+msgid " if (metadata-E<gt>fd E<gt>= 0) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:606
+#, no-wrap
+msgid " /* Handle open permission event */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:609
+#, no-wrap
+msgid ""
+" if (metadata-E<gt>mask & FAN_OPEN_PERM) {\n"
+" printf(\"FAN_OPEN_PERM: \");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:611
+#, no-wrap
+msgid " /* Allow file to be opened */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:617
+#, no-wrap
+msgid ""
+" response.fd = metadata-E<gt>fd;\n"
+" response.response = FAN_ALLOW;\n"
+" write(fd, &response,\n"
+" sizeof(struct fanotify_response));\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:619
+#, no-wrap
+msgid " /* Handle closing of writable file event */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:622
+#, no-wrap
+msgid ""
+" if (metadata-E<gt>mask & FAN_CLOSE_WRITE)\n"
+" printf(\"FAN_CLOSE_WRITE: \");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:624
+#, no-wrap
+msgid " /* Retrieve and print pathname of the accessed file */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:633
+#, no-wrap
+msgid ""
+" snprintf(procfd_path, sizeof(procfd_path),\n"
+" \"/proc/self/fd/%d\", metadata-E<gt>fd);\n"
+" path_len = readlink(procfd_path, path,\n"
+" sizeof(path) - 1);\n"
+" if (path_len == -1) {\n"
+" perror(\"readlink\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:636
+#, no-wrap
+msgid ""
+" path[path_len] = '\\e0';\n"
+" printf(\"File %s\\en\", path);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:638
+#, no-wrap
+msgid " /* Close the file descriptor of the event */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:641
+#, no-wrap
+msgid ""
+" close(metadata-E<gt>fd);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:643
+#, no-wrap
+msgid " /* Advance to next event */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:648
+#, no-wrap
+msgid ""
+" metadata = FAN_EVENT_NEXT(metadata, len);\n"
+" }\n"
+" }\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:656
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" char buf;\n"
+" int fd, poll_num;\n"
+" nfds_t nfds;\n"
+" struct pollfd fds[2];\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:658
+#, no-wrap
+msgid " /* Check mount point is supplied */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:663
+#, no-wrap
+msgid ""
+" if (argc != 2) {\n"
+" fprintf(stderr, \"Usage: %s MOUNT\\en\", argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:665
+#, no-wrap
+msgid " printf(\"Press enter key to terminate.\\en\");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:667
+#, no-wrap
+msgid " /* Create the file descriptor for accessing the fanotify API */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:674
+#, no-wrap
+msgid ""
+" fd = fanotify_init(FAN_CLOEXEC | FAN_CLASS_CONTENT | FAN_NONBLOCK,\n"
+" O_RDONLY | O_LARGEFILE);\n"
+" if (fd == -1) {\n"
+" perror(\"fanotify_init\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:679
+#, no-wrap
+msgid ""
+" /* Mark the mount for:\n"
+" - permission events before opening files\n"
+" - notification events after closing a write-enabled\n"
+" file descriptor */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:686
+#, no-wrap
+msgid ""
+" if (fanotify_mark(fd, FAN_MARK_ADD | FAN_MARK_MOUNT,\n"
+" FAN_OPEN_PERM | FAN_CLOSE_WRITE, -1,\n"
+" argv[1]) == -1) {\n"
+" perror(\"fanotify_mark\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:688
+#, no-wrap
+msgid " /* Prepare for polling */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:690
+#, no-wrap
+msgid " nfds = 2;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:692
+#, no-wrap
+msgid " /* Console input */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:695
+#, no-wrap
+msgid ""
+" fds[0].fd = STDIN_FILENO;\n"
+" fds[0].events = POLLIN;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:697
+#, no-wrap
+msgid " /* Fanotify input */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:700
+#, no-wrap
+msgid ""
+" fds[1].fd = fd;\n"
+" fds[1].events = POLLIN;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:702
+#, no-wrap
+msgid " /* This is the loop to wait for incoming events */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:704
+#, no-wrap
+msgid " printf(\"Listening for events.\\en\");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:710
+#, no-wrap
+msgid ""
+" while (1) {\n"
+" poll_num = poll(fds, nfds, -1);\n"
+" if (poll_num == -1) {\n"
+" if (errno == EINTR) /* Interrupted by a signal */\n"
+" continue; /* Restart poll() */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:714
+#, no-wrap
+msgid ""
+" perror(\"poll\"); /* Unexpected error */\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:717
+#, no-wrap
+msgid ""
+" if (poll_num E<gt> 0) {\n"
+" if (fds[0].revents & POLLIN) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:719
+#, no-wrap
+msgid " /* Console input is available: empty stdin and quit */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:724
+#, no-wrap
+msgid ""
+" while (read(STDIN_FILENO, &buf, 1) E<gt> 0 && buf != '\\en')\n"
+" continue;\n"
+" break;\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:726
+#, no-wrap
+msgid " if (fds[1].revents & POLLIN) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:728
+#, no-wrap
+msgid " /* Fanotify events are available */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:733
+#, no-wrap
+msgid ""
+" handle_events(fd);\n"
+" }\n"
+" }\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:737
+#, no-wrap
+msgid ""
+" printf(\"Listening for events stopped.\\en\");\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/fanotify.7:743
+#, fuzzy
+#| msgid "B<inotify_init>(2), B<inotify_rm_watch>(2), B<inotify>(7)"
+msgid "B<fanotify_init>(2), B<fanotify_mark>(2), B<inotify>(7)"
+msgstr "B<inotify_init>(2), B<inotify_rm_watch>(2), B<inotify>(7)"
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-06-03 01:29+0900\n"
+"POT-Creation-Date: 2014-06-08 01:16+0900\n"
"PO-Revision-Date: 2014-06-06 01:38+0900\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: 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:26
-#: build/C/man2/sched_yield.2:29 build/C/man2/setns.2:8
-#: build/C/man2/unshare.2:20
+#: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setparam.2:30
+#: build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29
+#: build/C/man2/setns.2:8 build/C/man2/unshare.2:20 build/C/man7/sched.7:32
#, no-wrap
msgid "Linux"
msgstr "Linux"
#: 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:26
-#: build/C/man2/sched_yield.2:29 build/C/man2/setns.2:8
-#: build/C/man2/unshare.2:20
+#: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setparam.2:30
+#: build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29
+#: build/C/man2/setns.2:8 build/C/man2/unshare.2:20 build/C/man7/sched.7:32
#, no-wrap
msgid "Linux Programmer's Manual"
msgstr "Linux Programmer's Manual"
#: 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:27
-#: build/C/man2/sched_yield.2:30 build/C/man2/setns.2:9
-#: build/C/man2/unshare.2:21
+#: build/C/man2/sched_setattr.2:27 build/C/man2/sched_setparam.2:31
+#: build/C/man2/sched_setscheduler.2:27 build/C/man2/sched_yield.2:30
+#: build/C/man2/setns.2:9 build/C/man2/unshare.2:21 build/C/man7/sched.7:33
#, no-wrap
msgid "NAME"
msgstr "名前"
#: 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:30
-#: build/C/man2/sched_yield.2:32 build/C/man2/setns.2:11
-#: build/C/man2/unshare.2:23
+#: 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 "書式"
#: build/C/man3/CPU_SET.3:79 build/C/man2/clone.2:86 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_setparam.2:47 build/C/man2/sched_setscheduler.2:41
-#: build/C/man2/sched_yield.2:36 build/C/man2/setns.2:18
-#: build/C/man2/unshare.2:50
+#: build/C/man2/sched_setattr.2:41 build/C/man2/sched_setparam.2:47
+#: build/C/man2/sched_setscheduler.2:41 build/C/man2/sched_yield.2:36
+#: build/C/man2/setns.2:18 build/C/man2/unshare.2:50 build/C/man7/sched.7:35
#, no-wrap
msgid "DESCRIPTION"
msgstr "説明"
#: build/C/man3/CPU_SET.3:210 build/C/man2/clone.2:878 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_setparam.2:87
-#: build/C/man2/sched_setscheduler.2:135 build/C/man2/sched_yield.2:41
-#: build/C/man2/setns.2:70 build/C/man2/unshare.2:207
+#: build/C/man2/sched_setaffinity.2:107 build/C/man2/sched_setattr.2:262
+#: build/C/man2/sched_setparam.2:87 build/C/man2/sched_setscheduler.2:135
+#: build/C/man2/sched_yield.2:41 build/C/man2/setns.2:70
+#: build/C/man2/unshare.2:207
#, no-wrap
msgid "RETURN VALUE"
msgstr "返り値"
#. type: SH
#: build/C/man3/CPU_SET.3:241 build/C/man2/clone.2:995 build/C/man2/kcmp.2:198
#: build/C/man3/sched_getcpu.3:70 build/C/man2/sched_setaffinity.2:148
-#: build/C/man2/setns.2:97 build/C/man2/unshare.2:224
+#: build/C/man2/sched_setattr.2:348 build/C/man2/setns.2:97
+#: build/C/man2/unshare.2:224
#, no-wrap
msgid "VERSIONS"
msgstr "バージョン"
#: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:1002
#: 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_setparam.2:119
-#: build/C/man2/sched_setscheduler.2:170 build/C/man2/sched_yield.2:52
-#: build/C/man2/setns.2:102 build/C/man2/unshare.2:228
+#: build/C/man2/sched_setaffinity.2:159 build/C/man2/sched_setattr.2:351
+#: build/C/man2/sched_setparam.2:119 build/C/man2/sched_setscheduler.2:170
+#: build/C/man2/sched_yield.2:52 build/C/man2/setns.2:102
+#: build/C/man2/unshare.2:228
#, no-wrap
msgid "CONFORMING TO"
msgstr "準拠"
#: build/C/man3/CPU_SET.3:272 build/C/man2/clone.2:1006
#: 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_setparam.2:121
-#: build/C/man2/sched_setscheduler.2:173 build/C/man2/sched_yield.2:54
-#: build/C/man2/setns.2:106 build/C/man2/unshare.2:232
+#: build/C/man2/sched_setaffinity.2:161 build/C/man2/sched_setattr.2:353
+#: build/C/man2/sched_setparam.2:121 build/C/man2/sched_setscheduler.2:173
+#: build/C/man2/sched_yield.2:54 build/C/man2/setns.2:106
+#: build/C/man2/unshare.2:232 build/C/man7/sched.7:612
#, no-wrap
msgid "NOTES"
msgstr "注意"
#. type: SH
#: build/C/man3/CPU_SET.3:300 build/C/man2/clone.2:1031
-#: build/C/man2/sched_setscheduler.2:214
+#: build/C/man2/sched_setattr.2:369 build/C/man2/sched_setscheduler.2:214
#, no-wrap
msgid "BUGS"
msgstr "バグ"
#: build/C/man3/CPU_SET.3:356 build/C/man2/clone.2:1170
#: build/C/man2/kcmp.2:222 build/C/man2/sched_get_priority_max.2:115
#: build/C/man3/sched_getcpu.3:100 build/C/man2/sched_rr_get_interval.2:132
-#: build/C/man2/sched_setaffinity.2:214 build/C/man2/sched_setparam.2:127
-#: build/C/man2/sched_setscheduler.2:222 build/C/man2/sched_yield.2:79
-#: build/C/man2/setns.2:199 build/C/man2/unshare.2:266
+#: build/C/man2/sched_setaffinity.2:214 build/C/man2/sched_setattr.2:385
+#: build/C/man2/sched_setparam.2:127 build/C/man2/sched_setscheduler.2:222
+#: build/C/man2/sched_yield.2:79 build/C/man2/setns.2:199
+#: build/C/man2/unshare.2:266 build/C/man7/sched.7:665
#, no-wrap
msgid "SEE ALSO"
msgstr "関連項目"
#: build/C/man3/CPU_SET.3:361 build/C/man2/clone.2:1184
#: build/C/man2/kcmp.2:225 build/C/man2/sched_get_priority_max.2:125
#: build/C/man3/sched_getcpu.3:103 build/C/man2/sched_rr_get_interval.2:134
-#: build/C/man2/sched_setaffinity.2:234 build/C/man2/sched_setparam.2:142
-#: build/C/man2/sched_setscheduler.2:241 build/C/man2/sched_yield.2:81
-#: build/C/man2/setns.2:205 build/C/man2/unshare.2:275
+#: build/C/man2/sched_setaffinity.2:234 build/C/man2/sched_setattr.2:407
+#: build/C/man2/sched_setparam.2:142 build/C/man2/sched_setscheduler.2:241
+#: build/C/man2/sched_yield.2:81 build/C/man2/setns.2:205
+#: build/C/man2/unshare.2:275 build/C/man7/sched.7:702
#, no-wrap
msgid "COLOPHON"
msgstr "この文書について"
#: build/C/man3/CPU_SET.3:369 build/C/man2/clone.2:1192
#: build/C/man2/kcmp.2:233 build/C/man2/sched_get_priority_max.2:133
#: build/C/man3/sched_getcpu.3:111 build/C/man2/sched_rr_get_interval.2:142
-#: build/C/man2/sched_setaffinity.2:242 build/C/man2/sched_setparam.2:150
-#: build/C/man2/sched_setscheduler.2:249 build/C/man2/sched_yield.2:89
-#: build/C/man2/setns.2:213 build/C/man2/unshare.2:283
+#: build/C/man2/sched_setaffinity.2:242 build/C/man2/sched_setattr.2:415
+#: build/C/man2/sched_setparam.2:150 build/C/man2/sched_setscheduler.2:249
+#: build/C/man2/sched_yield.2:89 build/C/man2/setns.2:213
+#: build/C/man2/unshare.2:283 build/C/man7/sched.7:710
msgid ""
"This page is part of release 3.67 of the Linux I<man-pages> project. A "
"description of the project, information about reporting bugs, and the latest "
#. type: Plain text
#: build/C/man2/clone.2:53 build/C/man3/sched_getcpu.3:32
-#: build/C/man2/sched_setparam.2:36 build/C/man2/sched_setscheduler.2:33
-#: build/C/man2/unshare.2:26
+#: 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 "B<#include E<lt>sched.hE<gt>>\n"
"process\". But see the description of B<CLONE_PARENT> below.)"
msgstr ""
"B<fork>(2) とは異なり、B<clone>() では、子プロセス (child process) と呼び出"
-"し元のプロセスとが、メモリ空間、ファイルディスクリプタのテーブル、シグナル"
-"ã\83\8fã\83³ã\83\89ã\83©ã\81®ã\83\86ã\83¼ã\83\96ã\83«ã\81ªã\81©ã\81® å®\9fè¡\8cã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81®ä¸\80é\83¨ã\82\92å\85±æ\9c\89ã\81§ã\81\8dã\82\8bã\80\82 (ã\81\93ã\81®ã\83\9eã\83\8bã\83¥ã\82¢ã\83«"
-"ã\81«ã\81\8aã\81\91ã\82\8bã\80\8cå\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83ã\82»ã\82¹ã\80\8dã\81¯ã\80\81é\80\9a常ã\81¯ ã\80\8c親ã\83\97ã\83ã\82»ã\82¹ã\80\8dã\81¨ä¸\80è\87´ã\81\99ã\82\8bã\80\82ä½\86ã\81\97ã\80\81å¾\8c"
-"述の B<CLONE_PARENT> の項も参照のこと)"
+"し元のプロセスとが、メモリ空間、ファイルディスクリプタのテーブル、シグナルハ"
+"ã\83³ã\83\89ã\83©ã\81®ã\83\86ã\83¼ã\83\96ã\83«ã\81ªã\81©ã\81® å®\9fè¡\8cã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81®ä¸\80é\83¨ã\82\92å\85±æ\9c\89ã\81§ã\81\8dã\82\8bã\80\82 (ã\81\93ã\81®ã\83\9eã\83\8bã\83¥ã\82¢ã\83«ã\81«"
+"ã\81\8aã\81\91ã\82\8bã\80\8cå\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83ã\82»ã\82¹ã\80\8dã\81¯ã\80\81é\80\9a常ã\81¯ ã\80\8c親ã\83\97ã\83ã\82»ã\82¹ã\80\8dã\81¨ä¸\80è\87´ã\81\99ã\82\8bã\80\82ä½\86ã\81\97ã\80\81å¾\8cè¿°"
+"の B<CLONE_PARENT> の項も参照のこと)"
#. type: Plain text
#: build/C/man2/clone.2:114
"B<chdir>(2), or B<umask>(2) performed by the calling process or the child "
"process also affects the other process."
msgstr ""
-"B<CLONE_FS> が設定された場合、呼び出し元のプロセスと子プロセスが同じファイ"
-"ã\83«ã\82·ã\82¹ã\83\86ã\83 æ\83\85å ±ã\82\92å\85±æ\9c\89ã\81\99ã\82\8bã\80\82ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 æ\83\85å ±ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81®"
-"ルート (root)、 カレントワーキングディレクトリ (current working "
-"directory) や umask などである。 呼び出し元のプロセスや子プロセスのどちらか"
-"一方によって B<chroot>(2), B<chdir>(2), B<umask>(2) が呼び出されると、もう一"
-"方のプロセスにも影響が及ぶ。"
+"B<CLONE_FS> が設定された場合、呼び出し元のプロセスと子プロセスが同じファイル"
+"ã\82·ã\82¹ã\83\86ã\83 æ\83\85å ±ã\82\92å\85±æ\9c\89ã\81\99ã\82\8bã\80\82ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 æ\83\85å ±ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81®ã\83«ã\83¼ã\83\88 "
+"(root)、 カレントワーキングディレクトリ (current working directory) や "
+"umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって "
+"B<chroot>(2), B<chdir>(2), B<umask>(2) が呼び出されると、もう一方のプロセス"
+"にも影響が及ぶ。"
#. type: Plain text
#: build/C/man2/clone.2:250
"one of the processes do not affect the other process."
msgstr ""
"B<CLONE_FS> が設定されていない場合、子プロセスは、 B<clone>() が実行された時"
-"点での、呼び出し元のプロセスのファイルシステム情報のコピーを 使用する。 こ"
-"れ以降は、呼び出し元のプロセスと子プロセスの一方が B<chroot>(2), "
-"B<chdir>(2), B<umask>(2) を呼び出しても、もう一方のプロセスには影響を与えな"
-"い。"
+"点での、呼び出し元のプロセスのファイルシステム情報のコピーを 使用する。 これ"
+"以降は、呼び出し元のプロセスと子プロセスの一方が B<chroot>(2), B<chdir>(2), "
+"B<umask>(2) を呼び出しても、もう一方のプロセスには影響を与えない。"
#. type: TP
#: build/C/man2/clone.2:250
"B<mq_overview>(7)). The common characteristic of these IPC mechanisms is "
"that IPC objects are identified by mechanisms other than filesystem "
"pathnames."
-msgstr "IPC 名前空間は、独立の System\\ V IPC オブジェクト空間 (B<svipc>(7) 参照) を提供する 。 (Linux 2.6.30 以降では) 独立した POSIX メッセージキュー空間 (B<mq_overview>(7) 参照) も提供される。 これらの IPC 機構に共通の特徴として、 IPC オブジェクトはファイルシステムのパス名とは違った仕組みで識別されるという点がある。"
+msgstr ""
+"IPC 名前空間は、独立の System\\ V IPC オブジェクト空間 (B<svipc>(7) 参照) を"
+"提供する 。 (Linux 2.6.30 以降では) 独立した POSIX メッセージキュー空間 "
+"(B<mq_overview>(7) 参照) も提供される。 これらの IPC 機構に共通の特徴とし"
+"て、 IPC オブジェクトはファイルシステムのパス名とは違った仕組みで識別されると"
+"いう点がある。"
#. type: Plain text
#: build/C/man2/clone.2:306
"B<sigprocmask>(2) without affecting the other process."
msgstr ""
"B<CLONE_SIGHAND> が設定された場合、呼び出し元のプロセスと子プロセスは同じシグ"
-"ナルハン ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのど"
-"ã\81¡ã\82\89ã\81\8bã\81\8c B<sigaction>(2) ã\82\92å\91¼ã\81³å\87ºã\81\97ã\81¦ã\82·ã\82°ã\83\8aã\83«ã\81«å¯¾å¿\9cã\81\99ã\82\8bå\8b\95ä½\9cã\82\92å¤\89æ\9b´ã\81\97ã\81\9få ´å\90\88ã\80\81 "
-"ã\82\82ã\81\86ä¸\80æ\96¹ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81®ã\82·ã\82°ã\83\8aã\83«å\8b\95ä½\9cã\82\82å¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\80\82 ä½\86ã\81\97ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81¨å\90"
-"ã\83\97ã\83ã\82»ã\82¹ã\81¯ã\80\81 ã\83\97ã\83ã\82»ã\82¹æ¯\8eã\81«ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83\9eã\82¹ã\82¯ (signal mask) ã\81¨å\87¦ç\90\86å¾\85ã\81¡ã\82·ã\82°ã\83\8aã\83«"
-"の集合 を持っている。このため、あるプロセスは、 B<sigprocmask>(2) を使用し"
-"ã\81¦ã\80\81ã\82\82ã\81\86ä¸\80æ\96¹ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81«å½±é\9f¿ã\82\92ä¸\8eã\81\88ã\81\9aã\81« ã\82·ã\82°ã\83\8aã\83«ã\82\92ç¦\81æ¢ (block) ã\81\97ã\81\9fã\82\8a許å\8f¯ "
-"(unblock) したりできる。"
+"ナルハン ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのどち"
+"ã\82\89ã\81\8bã\81\8c B<sigaction>(2) ã\82\92å\91¼ã\81³å\87ºã\81\97ã\81¦ã\82·ã\82°ã\83\8aã\83«ã\81«å¯¾å¿\9cã\81\99ã\82\8bå\8b\95ä½\9cã\82\92å¤\89æ\9b´ã\81\97ã\81\9få ´å\90\88ã\80\81 ã\82\82"
+"ã\81\86ä¸\80æ\96¹ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81®ã\82·ã\82°ã\83\8aã\83«å\8b\95ä½\9cã\82\82å¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\80\82 ä½\86ã\81\97ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81¨å\90ã\83\97"
+"ã\83ã\82»ã\82¹ã\81¯ã\80\81 ã\83\97ã\83ã\82»ã\82¹æ¯\8eã\81«ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83\9eã\82¹ã\82¯ (signal mask) ã\81¨å\87¦ç\90\86å¾\85ã\81¡ã\82·ã\82°ã\83\8aã\83«ã\81®é\9b\86"
+"合 を持っている。このため、あるプロセスは、 B<sigprocmask>(2) を使用して、も"
+"ã\81\86ä¸\80æ\96¹ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81«å½±é\9f¿ã\82\92ä¸\8eã\81\88ã\81\9aã\81« ã\82·ã\82°ã\83\8aã\83«ã\82\92ç¦\81æ¢ (block) ã\81\97ã\81\9fã\82\8a許å\8f¯ (unblock) "
+"したりできる。"
#. type: Plain text
#: build/C/man2/clone.2:590
"effect on the other process."
msgstr ""
"B<CLONE_SIGHAND> が設定されていない場合、子プロセスは B<clone>() が実行され"
-"た時点での、呼び出し元のプロセスのシグナルハンドラの コピーを継承する。これ"
-"以降は、一方のプロセスが B<sigaction>(2) を呼び出しても、もう一方のプロセス"
-"ã\81«ã\81¯å½±é\9f¿ã\82\92ä¸\8eã\81\88ã\81ªã\81\84ã\80\82"
+"た時点での、呼び出し元のプロセスのシグナルハンドラの コピーを継承する。これ以"
+"降は、一方のプロセスが B<sigaction>(2) を呼び出しても、もう一方のプロセスに"
+"は影響を与えない。"
#. type: Plain text
#: build/C/man2/clone.2:598
"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."
-msgstr "B<CLONE_SYSVSEM> がセットされると、子プロセスと呼び出し元プロセスは一つの System\\ V セマフォのアンドゥ値リスト (B<semop>(2) 参照) を共有する。このフラグがセットされていなければ、 子プロセスは独自のアンドゥリストを持つ (リストの初期値は空である)。"
+msgstr ""
+"B<CLONE_SYSVSEM> がセットされると、子プロセスと呼び出し元プロセスは一つの "
+"System\\ V セマフォのアンドゥ値リスト (B<semop>(2) 参照) を共有する。このフ"
+"ラグがセットされていなければ、 子プロセスは独自のアンドゥリストを持つ (リスト"
+"の初期値は空である)。"
#. type: TP
#: build/C/man2/clone.2:624
"processes within a thread group."
msgstr ""
"B<CLONE_THREAD> が設定された場合、子プロセスは呼び出し元のプロセスと同じス"
-"レッドグループに 置かれる。 B<CLONE_THREAD> についての以降の議論を読みやす"
-"ã\81\8fã\81\99ã\82\8bã\81\9fã\82\81ã\80\81 ã\80\8cã\82¹ã\83¬ã\83\83ã\83\89ã\80\8dã\81¨ã\81\84ã\81\86ç\94¨èª\9eã\81¯ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81®ä¸ã\81®ã\83\97ã\83ã\82»ã\82¹ã\82\92 å\8f\82ç\85§"
-"ã\81\99ã\82\8bã\81®ã\81«ä½¿ã\81\86ã\81\93ã\81¨ã\81¨ã\81\99ã\82\8bã\80\82"
+"レッドグループに 置かれる。 B<CLONE_THREAD> についての以降の議論を読みやすく"
+"ã\81\99ã\82\8bã\81\9fã\82\81ã\80\81 ã\80\8cã\82¹ã\83¬ã\83\83ã\83\89ã\80\8dã\81¨ã\81\84ã\81\86ç\94¨èª\9eã\81¯ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81®ä¸ã\81®ã\83\97ã\83ã\82»ã\82¹ã\82\92 å\8f\82ç\85§ã\81\99ã\82\8b"
+"のに使うこととする。"
#. type: Plain text
#: build/C/man2/clone.2:641
"PID is the so-called thread group identifier (TGID) for the thread group. "
"Since Linux 2.4, calls to B<getpid>(2) return the TGID of the caller."
msgstr ""
-"スレッドグループは、 スレッド集合で一つの PID を共有するという POSIX スレッ"
-"ã\83\89ã\81®æ¦\82念ã\82\92ã\82µã\83\9dã\83¼ã\83\88ã\81\99ã\82\8bã\81\9fã\82\81ã\81« Linux 2.4 ã\81«å\8a ã\81\88ã\82\89ã\82\8cã\81\9fæ©\9fè\83½ã\81§ã\81\82ã\81£ã\81\9fã\80\82 å\86\85é\83¨ç\9a\84ã\81«"
-"ã\81¯ã\80\81ã\81\93ã\81®å\85±æ\9c\89 PID ã\81¯ã\81\84ã\82\8fã\82\86ã\82\8bã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81® ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97è\98å\88¥å\90 "
-"(TGID) である。 Linux 2.4 以降では、 B<getpid>(2) の呼び出しではそのプロセス"
-"ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97 ID ã\82\92è¿\94ã\81\99ã\80\82"
+"スレッドグループは、 スレッド集合で一つの PID を共有するという POSIX スレッド"
+"ã\81®æ¦\82念ã\82\92ã\82µã\83\9dã\83¼ã\83\88ã\81\99ã\82\8bã\81\9fã\82\81ã\81« Linux 2.4 ã\81«å\8a ã\81\88ã\82\89ã\82\8cã\81\9fæ©\9fè\83½ã\81§ã\81\82ã\81£ã\81\9fã\80\82 å\86\85é\83¨ç\9a\84ã\81«ã\81¯ã\80\81"
+"ã\81\93ã\81®å\85±æ\9c\89 PID ã\81¯ã\81\84ã\82\8fã\82\86ã\82\8bã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81® ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97è\98å\88¥å\90 (TGID) "
+"である。 Linux 2.4 以降では、 B<getpid>(2) の呼び出しではそのプロセスのス"
+"レッドグループ ID を返す。"
#. type: Plain text
#: build/C/man2/clone.2:650
"as the thread's TID. This thread is the I<leader> of the new thread group."
msgstr ""
"B<CLONE_THREAD> を指定せずに B<clone>() の呼び出しが行われると、 生成された"
-"スレッドはそのスレッドの TID と同じ値の TGID を持つ 新しいスレッドグループ"
-"に置かれる。このスレッドは 新しいスレッドグループの「リーダー」である。"
+"スレッドはそのスレッドの TID と同じ値の TGID を持つ 新しいスレッドグループに"
+"置かれる。このスレッドは 新しいスレッドグループの「リーダー」である。"
#. type: Plain text
#: build/C/man2/clone.2:682
msgstr ""
"B<CLONE_THREAD> を指定して作成された新しいスレッドは、 (B<CLONE_PARENT> の場"
"合と同様に) B<clone>() を呼び出し元と同じ親プロセスを持つ。 そのため、 "
-"B<getppid>(2) を呼ぶと、一つのスレッドグループに属すスレッドは全て同じ値を"
-"返す。 B<CLONE_THREAD> で作られたスレッドが終了した際に、 そのスレッドを "
+"B<getppid>(2) を呼ぶと、一つのスレッドグループに属すスレッドは全て同じ値を返"
+"す。 B<CLONE_THREAD> で作られたスレッドが終了した際に、 そのスレッドを "
"B<clone>() を使って生成したスレッドには B<SIGCHLD> (もしくは他の終了シグナ"
"ル) は送信されない。 また、 B<wait>(2) を使って終了したスレッドの状態を取得"
"することもできない (そのようなスレッドは I<detached> (分離された) といわれ"
"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 ""
-"スレッドグループに属す全てのスレッドが終了した後、 そのスレッドグループの"
-"親プロセスに B<SIGCHLD> (もしくは他の終了シグナル) が送られる。"
+"スレッドグループに属す全てのスレッドが終了した後、 そのスレッドグループの親プ"
+"ロセスに B<SIGCHLD> (もしくは他の終了シグナル) が送られる。"
#. type: Plain text
#: build/C/man2/clone.2:692
"threads other than the thread group leader are terminated, and the new "
"program is executed in the thread group leader."
msgstr ""
-"スレッドグループに属すいずれかのスレッドが B<execve>(2) を実行すると、ス"
-"ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\83ªã\83¼ã\83\80ã\83¼ä»¥å¤\96ã\81®å\85¨ã\81¦ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81¯ çµ\82äº\86ã\81\95ã\82\8cã\80\81æ\96°ã\81\97ã\81\84ã\83\97ã\83ã\82»ã\82¹ã\81\8cã\81\9d"
-"ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\83ªã\83¼ã\83\80ã\83¼ã\81®ä¸\8bã\81§ å®\9fè¡\8cã\81\95ã\82\8cã\82\8bã\80\82"
+"スレッドグループに属すいずれかのスレッドが B<execve>(2) を実行すると、スレッ"
+"ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\83ªã\83¼ã\83\80ã\83¼ä»¥å¤\96ã\81®å\85¨ã\81¦ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81¯ çµ\82äº\86ã\81\95ã\82\8cã\80\81æ\96°ã\81\97ã\81\84ã\83\97ã\83ã\82»ã\82¹ã\81\8cã\81\9dã\81®ã\82¹ã\83¬ã\83\83"
+"ドグループリーダーの下で 実行される。"
#. type: Plain text
#: build/C/man2/clone.2:698
"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 ""
-"スレッドグループに属すスレッドの一つが B<fork>(2) を使って子プロセスを作成"
-"ã\81\97ã\81\9få ´å\90\88ã\80\81 ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81®ã\81©ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81§ã\81\82ã\81£ã\81¦ã\82\82 ã\81\9dã\81®å\90ä¾\9bã\82\92 B<wait>(2) "
-"ã\81§ã\81\8dã\82\8bã\80\82"
+"スレッドグループに属すスレッドの一つが B<fork>(2) を使って子プロセスを作成し"
+"ã\81\9få ´å\90\88ã\80\81 ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81®ã\81©ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81§ã\81\82ã\81£ã\81¦ã\82\82 ã\81\9dã\81®å\90ä¾\9bã\82\92 B<wait>(2) ã\81§ã\81\8d"
+"る。"
#. type: Plain text
#: build/C/man2/clone.2:711
"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 ""
-"B<kill>(2) を使ってスレッドグループ全体 (つまり TGID) にシグナルを送ること"
-"ã\82\82ã\81§ã\81\8dã\82\8cã\81°ã\80\81 B<tgkill>(2) ã\82\92使ã\81£ã\81¦ç\89¹å®\9aã\81®ã\82¹ã\83¬ã\83\83ã\83\89 (ã\81¤ã\81¾ã\82\8a TID) ã\81«ã\82·ã\82°ã\83\8aã\83«ã\82\92é\80\81"
-"ã\82\8bã\81\93ã\81¨ã\82\82ã\81§ã\81\8dã\82\8bã\80\82"
+"B<kill>(2) を使ってスレッドグループ全体 (つまり TGID) にシグナルを送ることも"
+"ã\81§ã\81\8dã\82\8cã\81°ã\80\81 B<tgkill>(2) ã\82\92使ã\81£ã\81¦ç\89¹å®\9aã\81®ã\82¹ã\83¬ã\83\83ã\83\89 (ã\81¤ã\81¾ã\82\8a TID) ã\81«ã\82·ã\82°ã\83\8aã\83«ã\82\92é\80\81ã\82\8b"
+"こともできる。"
#. type: Plain text
#: build/C/man2/clone.2:721
"ignored in) all members of the thread group."
msgstr ""
"シグナルの配送と処理はプロセス全体に影響する: ハンドラを設定していないシグナ"
-"ルがあるスレッドに配送されると、 そのシグナルはスレッドグループの全メンバー"
-"に影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。"
+"ルがあるスレッドに配送されると、 そのシグナルはスレッドグループの全メンバーに"
+"影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。"
#. type: Plain text
#: build/C/man2/clone.2:734
"accept the same signal using B<sigwaitinfo>(2), the kernel will arbitrarily "
"select one of these threads to receive a signal sent using B<kill>(2)."
msgstr ""
-"B<kill>(2) を使ってスレッドグループにシグナルが送られた場合で、 そのスレッ"
-"ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81\8cã\81\9dã\81®ã\82·ã\82°ã\83\8aã\83«ã\81«å¯¾ã\81\99ã\82\8bã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81\8c ç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81\9fã\81¨ã\81\8dã\81«"
-"ã\81¯ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81¯ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81® ã\83¡ã\83³ã\83\90ã\83¼ã\81®ã\81\86ã\81¡ã\80\81ã\81\9fã\81 ä¸\80ã\81¤ã\81®ã\82¹ã\83¬ã\83\83"
-"ã\83\89ã\81§ã\81 ã\81\91èµ·å\8b\95ã\81\95ã\82\8cã\82\8bã\80\82ã\83\8fã\83³ã\83\89ã\83©ã\81\8c èµ·å\8b\95ã\81\95ã\82\8cã\82\8bã\82¹ã\83¬ã\83\83ã\83\89ã\81¯ã\80\81ã\81\9dã\81®ã\82·ã\82°ã\83\8aã\83«ã\82\92ç¦\81æ¢ "
-"(block) していない メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。 "
-"ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\99è¤\87æ\95°ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8c B<sigwaitinfo>(2) ã\82\92使ã\81£ã\81¦å\90\8cã\81\98ã\82·ã\82°"
-"ナルを待っている場合、 これらのスレッドの中から一つをカーネルが勝手に選択"
-"し、 そのスレッドが B<kill (2)> を使って送信されたシグナルを受信する。"
+"B<kill>(2) を使ってスレッドグループにシグナルが送られた場合で、 そのスレッド"
+"ã\82°ã\83«ã\83¼ã\83\97ã\81\8cã\81\9dã\81®ã\82·ã\82°ã\83\8aã\83«ã\81«å¯¾ã\81\99ã\82\8bã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81\8c ç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81\9fã\81¨ã\81\8dã\81«ã\81¯ã\80\81ã\82·ã\82°"
+"ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81¯ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81® ã\83¡ã\83³ã\83\90ã\83¼ã\81®ã\81\86ã\81¡ã\80\81ã\81\9fã\81 ä¸\80ã\81¤ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81§ã\81 ã\81\91èµ·å\8b\95"
+"ã\81\95ã\82\8cã\82\8bã\80\82ã\83\8fã\83³ã\83\89ã\83©ã\81\8c èµ·å\8b\95ã\81\95ã\82\8cã\82\8bã\82¹ã\83¬ã\83\83ã\83\89ã\81¯ã\80\81ã\81\9dã\81®ã\82·ã\82°ã\83\8aã\83«ã\82\92ç¦\81æ¢ (block) ã\81\97ã\81¦ã\81\84ã\81ª"
+"い メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。 スレッドグループ"
+"ã\81«å±\9eã\81\99è¤\87æ\95°ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8c B<sigwaitinfo>(2) ã\82\92使ã\81£ã\81¦å\90\8cã\81\98ã\82·ã\82°ã\83\8aã\83«ã\82\92å¾\85ã\81£ã\81¦ã\81\84ã\82\8bå ´"
+"合、 これらのスレッドの中から一つをカーネルが勝手に選択し、 そのスレッドが "
+"B<kill (2)> を使って送信されたシグナルを受信する。"
#. type: TP
#: build/C/man2/clone.2:746
#: build/C/man2/clone.2:887 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_setparam.2:96
-#: build/C/man2/sched_setscheduler.2:145 build/C/man2/sched_yield.2:48
-#: build/C/man2/setns.2:77 build/C/man2/unshare.2:212
+#: build/C/man2/sched_setaffinity.2:116 build/C/man2/sched_setattr.2:271
+#: build/C/man2/sched_setparam.2:96 build/C/man2/sched_setscheduler.2:145
+#: build/C/man2/sched_yield.2:48 build/C/man2/setns.2:77
+#: build/C/man2/unshare.2:212
#, no-wrap
msgid "ERRORS"
msgstr "エラー"
#: 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_setparam.2:97 build/C/man2/sched_setparam.2:104
-#: build/C/man2/sched_setscheduler.2:146 build/C/man2/sched_setscheduler.2:153
-#: build/C/man2/sched_setscheduler.2:158 build/C/man2/setns.2:82
-#: build/C/man2/unshare.2:213
+#: build/C/man2/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:82 build/C/man2/unshare.2:213
#, no-wrap
msgid "B<EINVAL>"
msgstr "B<EINVAL>"
#. type: TP
#: build/C/man2/clone.2:982 build/C/man2/clone.2:991 build/C/man2/kcmp.2:185
-#: build/C/man2/sched_setaffinity.2:135 build/C/man2/sched_setparam.2:109
+#: build/C/man2/sched_setaffinity.2:135 build/C/man2/sched_setattr.2:339
+#: build/C/man2/sched_setattr.2:342 build/C/man2/sched_setparam.2:109
#: build/C/man2/sched_setscheduler.2:164 build/C/man2/setns.2:92
#: build/C/man2/unshare.2:221
#, no-wrap
"also does not occur if the I<flags> argument includes B<CLONE_VM>.) To get "
"the truth, it may be necessary to use code such as the following:"
msgstr ""
-"NPTL スレッドライブラリを含んでいる GNU C ライブラリのいくつかのバージョン "
-"ã\81«ã\81¯ã\80\81 B<getpid>(2) ã\81®ã\83©ã\83\83ã\83\91ã\83¼é\96¢æ\95°ã\81\8cå\90«ã\81¾ã\82\8cã\81¦ã\81\8aã\82\8aã\80\81ã\81\93ã\81®ã\83©ã\83\83ã\83\91ã\83¼é\96¢æ\95°ã\81¯ PID ã\82\92"
+"NPTL スレッドライブラリを含んでいる GNU C ライブラリのいくつかのバージョン に"
+"は、 B<getpid>(2) のラッパー関数が含まれており、このラッパー関数は PID を"
"キャッシュする。 このキャッシュ処理が正しく動作するためには glibc の "
"B<clone>() のラッパー関数での助けが必要だが、現状の実装では、 ある状況下にお"
"いてキャッシュが最新とならない可能性がある。 特に、 B<clone>() の呼び出し直"
"ロセス\") の PID が 返される可能性がある。 (この議論では、子プロセスが "
"B<CLONE_THREAD> を使って作成された場合のことは無視している。 子プロセスが "
"B<CLONE_THREAD> を作って作成された場合には、 呼び出し元と子プロセスは同じス"
-"レッドグループに属すので、 B<getpid>(2) は子プロセスと B<clone>() を呼び"
-"出したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 "
+"レッドグループに属すので、 B<getpid>(2) は子プロセスと B<clone>() を呼び出"
+"したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 "
"(stale-cache problem) は、 I<flags> に B<CLONE_VM> が含まれている場合にも発生"
"しない。) 本当の値を得るためには、次のようなコードを使う必要があるかもしれな"
"い。"
msgid ""
"Check whether the processes share the same list of System\\ V semaphore undo "
"operations. The arguments I<idx1> and I<idx2> are ignored."
-msgstr "二つのプロセスが同じ System\\ V セマフォ undo 操作のリストを共有しているかを検査する。 引き数 I<idx1> と I<idx2> は無視される。"
+msgstr ""
+"二つのプロセスが同じ System\\ V セマフォ undo 操作のリストを共有しているかを"
+"検査する。 引き数 I<idx1> と I<idx2> は無視される。"
#. type: TP
#: build/C/man2/kcmp.2:109
#. type: TP
#: build/C/man2/kcmp.2:191 build/C/man2/sched_rr_get_interval.2:90
-#: build/C/man2/sched_setaffinity.2:145 build/C/man2/sched_setparam.2:116
-#: build/C/man2/sched_setscheduler.2:167
+#: 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 "B<ESRCH>"
"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 "B<sched_get_priority_max>() はI<policy> によって指定されたスケジューリングのアルゴリズムで 使用されるプライオリティの最大値を返す。 B<sched_get_priority_min>() はI<policy> によって指定されたスケジューリングのアルゴリズムで 使用されるプライオリティの最小値を返す。 サポートされる I<policy> の値は B<SCHED_FIFO>、 B<SCHED_RR>、 B<SCHED_OTHER>、 B<SCHED_BATCH>, B<SCHED_IDLE>, B<SCHED_DEADLINE> である。これらのスケジューリング方針に関する詳細は B<sched>(7) に書かれている。"
+msgstr ""
+"B<sched_get_priority_max>() はI<policy> によって指定されたスケジューリングの"
+"アルゴリズムで 使用されるプライオリティの最大値を返す。 "
+"B<sched_get_priority_min>() はI<policy> によって指定されたスケジューリングの"
+"アルゴリズムで 使用されるプライオリティの最小値を返す。 サポートされる "
+"I<policy> の値は B<SCHED_FIFO>、 B<SCHED_RR>、 B<SCHED_OTHER>、 "
+"B<SCHED_BATCH>, B<SCHED_IDLE>, B<SCHED_DEADLINE> である。これらのスケジューリ"
+"ング方針に関する詳細は B<sched>(7) に書かれている。"
#. type: Plain text
#: build/C/man2/sched_get_priority_max.2:68
"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 "Linux では、 ポリシー B<SCHED_FIFO> と B<SCHED_RR> では 1 から 99 の範囲の静的プライオリティーを持ち、それ以外のポリシーでは プライオリティとして 0 を持つ。 それぞれの方針のスケジューリングプライオリティの範囲は 変更することができない。"
+msgstr ""
+"Linux では、 ポリシー B<SCHED_FIFO> と B<SCHED_RR> では 1 から 99 の範囲の静"
+"的プライオリティーを持ち、それ以外のポリシーでは プライオリティとして 0 を持"
+"つ。 それぞれの方針のスケジューリングプライオリティの範囲は 変更することがで"
+"きない。"
#. type: Plain text
#: build/C/man2/sched_get_priority_max.2:88
"B<sched_get_priority_min>(). POSIX.1-2001 requires a spread of at least 32 "
"between the maximum and the minimum values for B<SCHED_FIFO> and B<SCHED_RR>."
msgstr ""
-"スケジューリングプライオリティの範囲は他の POSIX システムと 異なっているか"
-"ã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\80\82ã\81\9dã\82\8cã\81§ã\80\81移æ¤\8dæ\80§(portable)ã\81®ã\81\82ã\82\8b ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81§ã\81¯ä»®æ\83³ç\9a\84ã\81ªç¯\84å\9b²ã\82\92"
-"用い B<sched_get_priority_max>() と B<sched_get_priority_min>() で与えられ"
-"た間隔にマップして使用することはいい考えである。 POSIX.1-2001 では "
+"スケジューリングプライオリティの範囲は他の POSIX システムと 異なっているかも"
+"ã\81\97ã\82\8cã\81ªã\81\84ã\80\82ã\81\9dã\82\8cã\81§ã\80\81移æ¤\8dæ\80§(portable)ã\81®ã\81\82ã\82\8b ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81§ã\81¯ä»®æ\83³ç\9a\84ã\81ªç¯\84å\9b²ã\82\92ç\94¨"
+"い B<sched_get_priority_max>() と B<sched_get_priority_min>() で与えられた"
+"間隔にマップして使用することはいい考えである。 POSIX.1-2001 では "
"B<SCHED_FIFO> と B<SCHED_RR> における 最大値と最小値の間隔を少なくとも 32 に"
"することを要求している。"
"B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), "
"B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
"B<sched>(7)"
-msgstr "B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), B<sched>(7)"
+msgstr ""
+"B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), "
+"B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
+"B<sched>(7)"
#. type: TH
#: build/C/man3/sched_getcpu.3:26
"CPU."
msgstr ""
"スレッドの CPU affinity (親和度) マスクは、そのスレッドが 実行を許可されてい"
-"る CPU の集合を決定する。 マルチプロセッサシステムでは、CPU affinity マスク"
-"を設定することで 性能上のメリットを得られる可能性がある。 例えば、特定のス"
-"ã\83¬ã\83\83ã\83\89ã\82\92ä¸\80ã\81¤ã\81® CPU ã\81«æ\8b¬ã\82\8aä»\98ã\81\91 (ã\81\99ã\81ªã\82\8fã\81¡ã\80\81ã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81® affinity ã\83\9eã\82¹ã\82¯ã\82\92ä¸\80ã\81¤"
-"の CPU に設定し)、 他の全てのスレッドの affinity マスクからその CPU を除外す"
-"ã\82\8bã\81\93ã\81¨ã\81§ã\80\81 確å®\9fã\81«ã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81®å®\9fè¡\8cé\80\9f度ã\82\92æ\9c\80大ã\81«ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82 ã\81¾ã\81\9fã\80\81ã\81\82ã\82\8b"
-"ã\82¹ã\83¬ã\83\83ã\83\89ã\81®å®\9fè¡\8cã\82\92ä¸\80ã\81¤ã\81® CPU ã\81«é\99\90å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81§ã\80\81 ä¸\80ã\81¤ã\81® CPU ã\81§ã\81®å®\9fè¡\8cã\82\92å\81\9cæ¢ã\81\97ã\81¦ã\81\8b"
-"ら別の CPU で実行を再開するときに発生する キャッシュ無効化 (cache "
+"る CPU の集合を決定する。 マルチプロセッサシステムでは、CPU affinity マスクを"
+"設定することで 性能上のメリットを得られる可能性がある。 例えば、特定のスレッ"
+"ã\83\89ã\82\92ä¸\80ã\81¤ã\81® CPU ã\81«æ\8b¬ã\82\8aä»\98ã\81\91 (ã\81\99ã\81ªã\82\8fã\81¡ã\80\81ã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81® affinity ã\83\9eã\82¹ã\82¯ã\82\92ä¸\80ã\81¤ã\81® "
+"CPU に設定し)、 他の全てのスレッドの affinity マスクからその CPU を除外するこ"
+"ã\81¨ã\81§ã\80\81 確å®\9fã\81«ã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81®å®\9fè¡\8cé\80\9f度ã\82\92æ\9c\80大ã\81«ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82 ã\81¾ã\81\9fã\80\81ã\81\82ã\82\8bã\82¹"
+"ã\83¬ã\83\83ã\83\89ã\81®å®\9fè¡\8cã\82\92ä¸\80ã\81¤ã\81® CPU ã\81«é\99\90å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81§ã\80\81 ä¸\80ã\81¤ã\81® CPU ã\81§ã\81®å®\9fè¡\8cã\82\92å\81\9cæ¢ã\81\97ã\81¦ã\81\8bã\82\89"
+"別の CPU で実行を再開するときに発生する キャッシュ無効化 (cache "
"invalidation) による性能面の劣化を避けることもできる。"
#. type: Plain text
"なければならない。"
#. type: Plain text
-#: build/C/man2/sched_setaffinity.2:148 build/C/man2/sched_setscheduler.2:170
+#: 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 "ID が I<pid> のスレッドが見つからなかった。"
"the CPU set bit mask."
msgstr ""
"このマニュアルページでは CPU affinity コールの glibc インタフェースを 説明し"
-"ている。実際のシステムコールインタフェースは少し違っており、 実際の実装で"
-"は CPU 集合は簡単なビットマスクであるという実状を反映し、 I<mask> の型が "
+"ている。実際のシステムコールインタフェースは少し違っており、 実際の実装では "
+"CPU 集合は簡単なビットマスクであるという実状を反映し、 I<mask> の型が "
"I<unsigned long\\ *> となっている。 成功時には、生の B<sched_getaffinity>() "
"システムコール自身は I<cpumask_t> データ型の (バイト単位の) 大きさを返す。 "
"I<cpumask_t> はカーネル内部で CPU 集合のビットマスクを表現するのに 使われてい"
"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 "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 ""
+"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)"
#. type: TH
-#: build/C/man2/sched_setparam.2:30
-#, no-wrap
-msgid "SCHED_SETPARAM"
+#: build/C/man2/sched_setattr.2:26
+#, fuzzy, no-wrap
+#| msgid "SCHED_SETPARAM"
+msgid "SCHED_SETATTR"
msgstr "SCHED_SETPARAM"
#. type: TH
-#: build/C/man2/sched_setparam.2:30
-#, no-wrap
-msgid "2014-05-11"
-msgstr "2014-05-11"
-
-#. type: Plain text
-#: build/C/man2/sched_setparam.2:33
-msgid "sched_setparam, sched_getparam - set and get scheduling parameters"
-msgstr ""
-"sched_setparam, sched_getparam - スケジューリングパラメータの設定と取得を行"
-"なう"
-
-#. type: Plain text
-#: build/C/man2/sched_setparam.2:38
-#, no-wrap
-msgid "B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param *>I<param>B<);>\n"
-msgstr "B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param *>I<param>B<);>\n"
-
-#. 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"
-msgstr "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
-
-#. 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 ""
-"B<struct sched_param {\n"
-" ...\n"
-" int >I<sched_priority>B<;\n"
-" ...\n"
-"};>\n"
-
-#. 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 "B<sched_setparam>() は I<pid> で指定されたプロセスのスケジューリング方針 (scheduling policy) に 関連するスケジューリングパラメータを設定する。 I<pid> が 0 ならば、呼び出し元のプロセスのパラメータが設定される。 引き数 I<param> の解釈は、 I<pid> で指定されたプロセスのスケジューリング方針によって異なる。 Linux でサポートされているスケジューリング方針の説明は B<sched>(7) を参照のこと。"
-
-#. 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 ""
-"B<sched_getparam>() は I<pid> で指定されたプロセスのスケジューリングパラ"
-"メータを取得する。 I<pid> が 0 ならば、呼び出し元のプロセスのパラメータを取得"
-"する。"
-
-#. 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 ""
-"B<sched_setparam>() はスレッドのスケジューリング方針における I<param> の妥当"
-"性をチェックする。 I<param-E<gt>sched_priority> の値は "
-"B<sched_get_priority_min>(2) と B<sched_get_priority_max>(2) の範囲に入って"
-"いなければならない。"
-
-#. 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 "スケジューリングの優先度と方針に関連する特権とリソース制限の 議論に関しては B<sched>(7) を参照のこと。"
-
-#. 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 ""
-"B<sched_setparam>() と B<sched_getparam>() が使用できる POSIX システムで"
-"は、 I<E<lt>unistd.hE<gt>> に B<_POSIX_PRIORITY_SCHEDULING> が定義されてい"
-"る。"
+#: build/C/man2/sched_setattr.2:26 build/C/man7/sched.7:32
+#, fuzzy, no-wrap
+#| msgid "2014-05-12"
+msgid "2014-05-13"
+msgstr "2014-05-12"
#. type: Plain text
-#: build/C/man2/sched_setparam.2:96
+#: build/C/man2/sched_setattr.2:30
+#, fuzzy
+#| msgid "sched_setparam, sched_getparam - set and get scheduling parameters"
msgid ""
-"On success, B<sched_setparam>() and B<sched_getparam>() return 0. On "
-"error, -1 is returned, and I<errno> is set appropriately."
+"sched_setattr, sched_getattr - set and get scheduling policy and attributes"
msgstr ""
-"成功した場合は B<sched_setparam>() と B<sched_getparam>() は 0 を返す。 エ"
-"ラーの場合は -1 が返され、 I<errno> が適切に設定される。"
-
-#. type: Plain text
-#: build/C/man2/sched_setparam.2:104
-msgid "Invalid arguments: I<param> is NULL or I<pid> is negative"
-msgstr "無効な引き数: I<param> が NULL である、または I<pid> が負である。"
-
-#. 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 "(B<sched_setparam>()) 引き数 I<param> が現在のスケジューリング方針においては 無意味である。"
-
-#. 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 "(B<sched_setparam>()) 呼び出し元のプロセスが適切な特権を持っていない (Linux では、 B<CAP_SYS_NICE> ケーパビリティを持っていない)。"
-
-#. type: Plain text
-#: build/C/man2/sched_setparam.2:119
-msgid "The process whose ID is I<pid> could not be found."
-msgstr "プロセス ID I<pid> のプロセスが見つからなかった。"
-
-#. 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 "Linux では、スケジューリングパラメータは実際にはスレッド単位の属性である。 B<sched>(7) 参照。"
-
-#. 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 "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)"
-
-#. type: TH
-#: build/C/man2/sched_setscheduler.2:26
-#, no-wrap
-msgid "SCHED_SETSCHEDULER"
-msgstr "SCHED_SETSCHEDULER"
-
-#. type: TH
-#: build/C/man2/sched_setscheduler.2:26
-#, no-wrap
-msgid "2014-05-21"
-msgstr "2014-05-21"
+"sched_setparam, sched_getparam - スケジューリングパラメータの設定と取得を行な"
+"う"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:30
+#: build/C/man2/sched_setattr.2:36
+#, fuzzy, no-wrap
+#| msgid ""
+#| "B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
+#| "B< cpu_set_t *>I<mask>B<);>\n"
msgid ""
-"sched_setscheduler, sched_getscheduler - set and get scheduling policy/"
-"parameters"
+"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 ""
-"sched_setscheduler, sched_getscheduler - スケジューリングポリシーとパラメー"
-"タを設定/取得する"
-
-#. 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 "B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
-
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:37
-#, no-wrap
-msgid "B< const struct sched_param *>I<param>B<);>\n"
-msgstr "B< const struct sched_param *>I<param>B<);>\n"
-
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:39
-#, no-wrap
-msgid "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
-msgstr "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
-
-#. 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 "B<sched_setscheduler>() システムコールは、 I<pid> で指定された ID を持つスレッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定する。 I<pid> が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとスケジューリングパラメーターが設定される。"
+"B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
+"B< cpu_set_t *>I<mask>B<);>\n"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:53
+#: build/C/man2/sched_setattr.2:39
+#, fuzzy, no-wrap
+#| msgid ""
+#| "B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
+#| "B< cpu_set_t *>I<mask>B<);>\n"
msgid ""
-"The scheduling parameters are specified in the I<param> argument, which is a "
-"pointer to a structure of the following form:"
+"B<int sched_getattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
+"B< unsigned int >I<size>B<, unsigned int >I<flags>B<);>\n"
msgstr ""
+"B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
+"B< cpu_set_t *>I<mask>B<);>\n"
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:61
-#, no-wrap
-msgid ""
-"struct sched_param {\n"
-" ...\n"
-" int sched_priority;\n"
-" ...\n"
-"};\n"
-msgstr ""
-"struct sched_param {\n"
-" ...\n"
-" int sched_priority;\n"
-" ...\n"
-"};\n"
+#. type: SS
+#: build/C/man2/sched_setattr.2:42
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "sched_setattr()"
+msgstr "B<sched_getcpu>():"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:69
+#: build/C/man2/sched_setattr.2:52
+#, fuzzy
+#| 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."
msgid ""
-"In the current implementation, the structure contains only one field, "
-"I<sched_priority>. The interpretation of I<param> depends on the selected "
-"policy."
+"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 ""
+"B<sched_setscheduler>() システムコールは、 I<pid> で指定された ID を持つス"
+"レッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定す"
+"る。 I<pid> が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとス"
+"ケジューリングパラメーターが設定される。"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:73
+#: 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_setscheduler.2:73
+#: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:73
#, no-wrap
msgid "B<SCHED_OTHER>"
msgstr "B<SCHED_OTHER>"
#. In the 2.6 kernel sources, SCHED_OTHER is actually called
#. SCHED_NORMAL.
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:78
+#: 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_setscheduler.2:78
+#: build/C/man2/sched_setattr.2:61 build/C/man2/sched_setscheduler.2:78
#, no-wrap
msgid "B<SCHED_BATCH>"
msgstr "B<SCHED_BATCH>"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:81
+#: 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_setscheduler.2:81
+#: build/C/man2/sched_setattr.2:64 build/C/man2/sched_setscheduler.2:81
#, no-wrap
msgid "B<SCHED_IDLE>"
msgstr "B<SCHED_IDLE>"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:86
+#: 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_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:99
+#: 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 "どの実行可能スレッドを選択するかについて、より正確な制御を必要とする 時間の制約が厳しい特別なアプリケーション用として、 いろいろな「リアルタイム」ポリシーもサポートされている。 プロセスがこれらのポリシーをいつ使用できるかを決めるルールについては、B<sched>(7) を参照。 I<policy> には以下のリアルタイムポリシーを指定できる。"
+msgstr ""
+"どの実行可能スレッドを選択するかについて、より正確な制御を必要とする 時間の制"
+"約が厳しい特別なアプリケーション用として、 いろいろな「リアルタイム」ポリシー"
+"もサポートされている。 プロセスがこれらのポリシーをいつ使用できるかを決める"
+"ルールについては、B<sched>(7) を参照。 I<policy> には以下のリアルタイムポリ"
+"シーを指定できる。"
#. type: TP
-#: build/C/man2/sched_setscheduler.2:99
+#: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:99
#, no-wrap
msgid "B<SCHED_FIFO>"
msgstr "B<SCHED_FIFO>"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:102
+#: 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_setscheduler.2:102
+#: build/C/man2/sched_setattr.2:81 build/C/man2/sched_setscheduler.2:102
#, no-wrap
msgid "B<SCHED_RR>"
msgstr "B<SCHED_RR>"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:105
+#: 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_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_min>(2) "
-"with the specified I<policy>. On Linux, these system calls return, "
-"respectively, 1 and 99."
+#: build/C/man2/sched_setattr.2:86
+msgid "Linux also provides the following policy:"
msgstr ""
+#. type: TP
+#: build/C/man2/sched_setattr.2:86
+#, fuzzy, no-wrap
+#| msgid "B<SCHED_IDLE>"
+msgid "B<SCHED_DEADLINE>"
+msgstr "B<SCHED_IDLE>"
+
#. 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 "Linux 2.6.32 以降では、 B<sched_setscheduler>() を呼び出す際に I<policy> に B<SCHED_RESET_ON_FORK> フラグを OR で指定できる。このフラグが指定されると、 B<fork>(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承しない。 詳細は B<sched>(7) を参照。"
+#: 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_setscheduler.2:135
+#: build/C/man2/sched_setattr.2:97
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 "B<sched_getscheduler>() は I<pid> で識別されるスレッドの現在のスケジューリングポリシーを返す。I<pid> が 0 ならば、呼び出した スレッド自身のスケジューリングポリシーが返される。"
+"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_setscheduler.2:145
+#: build/C/man2/sched_setattr.2:113
+#, no-wrap
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 "成功した場合、 B<sched_setscheduler>() は 0 を返す。 成功した場合、 B<sched_getscheduler>() は現在のそのスレッドのポリシー (非負の整数) を返す。 エラーの場合、 どちらのコールも -1 を返し、 I<errno> が適切に設定される。"
+"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_setscheduler.2:153
-msgid "Invalid arguments: I<pid> is negative or I<param> is NULL."
-msgstr "無効な引き数: I<pid> が負である、または I<param> が NULL である。"
+#: build/C/man2/sched_setattr.2:117
+#, fuzzy
+#| msgid "The I<timespec> structure has the following form:"
+msgid "The fields of this structure are as follows:"
+msgstr "I<timespec> 構造体は以下の通りである:"
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:117
+#, no-wrap
+msgid "B<size>"
+msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:158
+#: build/C/man2/sched_setattr.2:132
msgid ""
-"(B<sched_setscheduler>()) I<policy> is not one of the recognized policies."
-msgstr "(B<sched_setscheduler>()) I<policy> が認識できるポリシーではない。"
+"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_setscheduler.2:164
+#: build/C/man2/sched_setattr.2:146
msgid ""
-"(B<sched_setscheduler>()) I<param> does not make sense for the specified "
-"I<policy>."
-msgstr "(B<sched_setscheduler>()) 引き数 I<param> が指定された I<policy> では意味を持たない。"
+"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: Plain text
-#: build/C/man2/sched_setscheduler.2:167
-msgid "The calling thread does not have appropriate privileges."
-msgstr "呼び出したスレッドが適切な特権を持っていない。"
+#. type: TP
+#: build/C/man2/sched_setattr.2:146
+#, no-wrap
+msgid "I<sched_policy>"
+msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:173
+#: build/C/man2/sched_setattr.2:151
msgid ""
-"POSIX.1-2001 (but see BUGS below). The B<SCHED_BATCH> and B<SCHED_IDLE> "
-"policies are Linux-specific."
+"This field specifies the scheduling policy, as one of the B<SCHED_*> values "
+"listed above."
msgstr ""
-"POSIX.1-2001 (但し、下記のバグの節も参照)。 B<SCHED_BATCH> と B<SCHED_IDLE> "
-"ポリシーは Linux 固有である。"
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:177
-msgid ""
-"Further details of the semantics of all of the above \"normal\" and \"real-"
-"time\" scheduling policies can be found in B<sched>(7)."
+#. type: TP
+#: build/C/man2/sched_setattr.2:151
+#, no-wrap
+msgid "I<sched_flags>"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:185
+#: build/C/man2/sched_setattr.2:162
+#, fuzzy
+#| 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."
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 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 ""
+"Linux 2.6.32 以降では、 B<sched_setscheduler>() を呼び出す際に I<policy> に "
+"B<SCHED_RESET_ON_FORK> フラグを OR で指定できる。このフラグが指定されると、 "
+"B<fork>(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承"
+"しない。 詳細は B<sched>(7) を参照。"
+
+#. type: TP
+#: build/C/man2/sched_setattr.2:162
+#, no-wrap
+msgid "I<sched_nice>"
msgstr ""
-"POSIX システムでは I<E<lt>unistd.hE<gt>> に B<_POSIX_PRIORITY_SCHEDULING> が"
-"定義されている場合にのみ B<sched_setscheduler>() と "
-"B<sched_getscheduler>() が使用できる。"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:193
+#: build/C/man2/sched_setattr.2:173
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."
+"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 ""
-"POSIX.1 は、非特権スレッドが B<sched_setscheduler>() を呼び出すために必要な"
-"権限の詳細を規定しておらず、 詳細はシステムにより異なる。 例えば、Solaris 7 "
-"のマニュアルページでは、 呼び出し元の実ユーザ ID または実効ユーザ ID が 設定"
-"対象の実ユーザ ID か保存 (save) set-user-ID と 一致していなければならない、と"
-"なっている。"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:214
+#: build/C/man2/sched_setattr.2:186
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.)"
+"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 ""
-"Linux では、 スケジューリングポリシーとスケジューリングパラメータは、 実際に"
-"はスレッド単位の属性である。 B<gettid>(2) の呼び出しの返り値をこのシステム"
-"コールの I<pid> 引き数として渡すことができる。 I<pid> に 0 を指定すると、 呼"
-"び出し元のスレッドの属性が設定される。 B<getpid>(2) コールからの返り値を "
-"I<pid> に指定すると、 スレッドグループのメインスレッドの属性が設定される "
-"(POSIX スレッド API を使用している場合は、 B<sched_*>(2) システムコールの代わ"
-"りに B<pthread_setschedparam>(3), B<pthread_getschedparam>(3), and "
-"B<pthread_setschedprio>(3) を使用すること)。"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:222
+#: build/C/man2/sched_setattr.2:195
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."
+"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 ""
-"POSIX では、成功時に B<sched_setscheduler>() は直前のスケジューリングポリ"
-"シーを返すべきとされている。 Linux の B<sched_setscheduler>() はこの要求仕様"
-"に準拠しておらず、 成功時には常に 0 を返す。"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:240
+#: build/C/man2/sched_setattr.2:199
msgid ""
-"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
-"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
-"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
-"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
-"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
-msgstr "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+"This field specifies the \"Deadline\" parameter for deadline scheduling. "
+"The value is expressed in nanoseconds."
+msgstr ""
-#. type: TH
-#: build/C/man2/sched_yield.2:29
+#. type: TP
+#: build/C/man2/sched_setattr.2:199
#, no-wrap
-msgid "SCHED_YIELD"
-msgstr "SCHED_YIELD"
+msgid "I<sched_period>"
+msgstr ""
#. type: Plain text
-#: build/C/man2/sched_yield.2:32
-msgid "sched_yield - yield the processor"
-msgstr "sched_yield - プロセッサーを空け渡す(yield)"
+#: 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_yield.2:36
-msgid "B<int sched_yield(void);>"
-msgstr "B<int sched_yield(void);>"
+#: 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
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "sched_getattr()"
+msgstr "B<sched_getcpu>():"
#. type: Plain text
-#: build/C/man2/sched_yield.2:41
+#: build/C/man2/sched_setattr.2:221
+#, fuzzy
+#| 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."
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."
+"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 ""
-"B<sched_yield>() を呼び出すことで、呼び出したスレッドが CPU の使用権を手放す"
-"ことができる。 そのスレッドは、そのスレッドの静的プライオリティのキューの末尾"
-"に 移動し、新しいスレッドが走り始める。"
+"B<sched_setscheduler>() システムコールは、 I<pid> で指定された ID を持つス"
+"レッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定す"
+"る。 I<pid> が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとス"
+"ケジューリングパラメーターが設定される。"
#. type: Plain text
-#: build/C/man2/sched_yield.2:48
+#: build/C/man2/sched_setattr.2:231
msgid ""
-"On success, B<sched_yield>() returns 0. On error, -1 is returned, and "
-"I<errno> is set appropriately."
+"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 ""
-"成功した場合は B<sched_yield>() は 0 を返す。 エラーの場合は -1 が返され、 "
-"I<errno> が適切に設定される。"
#. type: Plain text
-#: build/C/man2/sched_yield.2:52
-msgid "In the Linux implementation, B<sched_yield>() always succeeds."
-msgstr "Linux の実装では、 B<sched_yield>() は常に成功する。"
+#: 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_yield.2:59
+#: build/C/man2/sched_setattr.2:257
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>()."
+"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 ""
-"B<sched_yield>() を呼び出した時点で最大優先度のリストの中に呼び出し元のス"
-"レッドしか 存在しなければ、そのスレッドは呼び出し後も走り続けることになる。"
#. type: Plain text
-#: build/C/man2/sched_yield.2:66
+#: build/C/man2/sched_setattr.2:271
+#, fuzzy
+#| msgid ""
+#| "On success, B<sched_setparam>() and B<sched_getparam>() return 0. On "
+#| "error, -1 is returned, and I<errno> is set appropriately."
msgid ""
-"POSIX systems on which B<sched_yield>() is available define "
-"B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
+"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 ""
-"POSIX システムで B<sched_yield>() は I<E<lt>unistd.hE<gt>> に "
-"B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。"
+"成功した場合は B<sched_setparam>() と B<sched_getparam>() は 0 を返す。 エ"
+"ラーの場合は -1 が返され、 I<errno> が適切に設定される。"
#. type: Plain text
-#: build/C/man2/sched_yield.2:79
+#: build/C/man2/sched_setattr.2:276
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."
+"B<sched_getattr>() and B<sched_setattr>() can both fail for the following "
+"reasons:"
msgstr ""
-"B<sched_yield>() を戦略的に呼び出すことで、(極度に) 競合するリソース (mutex "
-"など) を呼び出し元が解放した際に他のスレッドやプロセスに実行機会を与えること"
-"で、 性能を上げることができる。 B<sched_yield>() を必要もないのに呼び出した"
-"り、不適切な場面 (例えば、他のスケジューリング 対象となるスレッドが必要とする"
-"リソースを呼び出し元が保持したままの状態) で呼び出したりするのは避けること。"
-"なぜなら、 B<sched_yield>() の呼び出しより不必要なコンテキストスイッチが起こ"
-"り、システム性能が 劣化する結果になるからである。"
-
-#. type: TH
-#: build/C/man2/setns.2:8
-#, no-wrap
-msgid "SETNS"
-msgstr "SETNS"
-
-#. type: TH
-#: build/C/man2/setns.2:8
-#, no-wrap
-msgid "2013-01-01"
-msgstr "2013-01-01"
#. type: Plain text
-#: build/C/man2/setns.2:11
-msgid "setns - reassociate thread with a namespace"
-msgstr "setns - スレッドに名前空間を関連付けしなおす"
+#: build/C/man2/sched_setattr.2:284
+#, fuzzy
+#| msgid "Invalid arguments: I<pid> is negative or I<param> is NULL."
+msgid "I<attr> is NULL; or I<pid> is negative; or I<flags> is not zero."
+msgstr "無効な引き数: I<pid> が負である、または I<param> が NULL である。"
#. type: Plain text
-#: build/C/man2/setns.2:17
+#: 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<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
-msgstr "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
+msgid "B<E2BIG>"
+msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:21
-msgid ""
-"Given a file descriptor referring to a namespace, reassociate the calling "
-"thread with that namespace."
+#: build/C/man2/sched_setattr.2:300
+msgid "The buffer specified by I<size> and I<attr> is too small."
msgstr ""
-"名前空間を参照するファイルディスクリプタを指定すると、\n"
-"呼び出したスレッドにその名前空間を関連付けしなおす。"
#. type: Plain text
-#: build/C/man2/setns.2:34
+#: build/C/man2/sched_setattr.2:306
msgid ""
-"The I<fd> argument is a file descriptor referring to one of the namespace "
-"entries in a I</proc/[pid]/ns/> directory; see B<proc>(5) for further "
-"information on I</proc/[pid]/ns/>. The calling thread will be reassociated "
-"with the corresponding namespace, subject to any constraints imposed by the "
-"I<nstype> argument."
+"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 ""
-"I<fd> 引き数は、 I</proc/[pid]/ns/> ディレクトリ内の名前空間エントリ\n"
-"のいずれかを参照するファイルディスクリプタである。\n"
-"I</proc/[pid]/ns/> の詳細は B<proc>(5) を参照。\n"
-"I<nstype> 引き数で指定された制限の範囲内で、\n"
-"呼び出したスレッドに I<fd> に対応する名前空間を関連付けしなおす。"
#. type: Plain text
-#: build/C/man2/setns.2:40
+#: 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 I<nstype> argument specifies which type of namespace the calling thread "
-"may be reassociated with. This argument can have one of the following "
-"values:"
+"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 ""
-"I<nstype> 引き数は、呼び出したスレッドがどのタイプの名前空間を\n"
-"関連付けしなおすことができるかを指定する。\n"
-"この引き数には以下のいずれかの値を指定できる。"
#. type: TP
-#: build/C/man2/setns.2:40
-#, no-wrap
-msgid "B<0>"
-msgstr "B<0>"
+#: build/C/man2/sched_setattr.2:318
+#, fuzzy, no-wrap
+#| msgid "B<EBADF>"
+msgid "B<EBUSY>"
+msgstr "B<EBADF>"
#. type: Plain text
-#: build/C/man2/setns.2:43
-msgid "Allow any type of namespace to be joined."
-msgstr "どのタイプの名前空間も関連付けることができる。"
-
-#. type: TP
-#: build/C/man2/setns.2:43
-#, no-wrap
-msgid "B<CLONE_NEWIPC>"
-msgstr "B<CLONE_NEWIPC>"
+#: 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/setns.2:47
-msgid "I<fd> must refer to an IPC namespace."
-msgstr "I<fd> は IPC 名前空間を参照していなければならない。"
+#: 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: TP
-#: build/C/man2/setns.2:47
-#, no-wrap
-msgid "B<CLONE_NEWNET>"
-msgstr "B<CLONE_NEWNET>"
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:342
+#, fuzzy
+#| msgid "The calling thread does not have appropriate privileges."
+msgid "The caller does not have appropriate privileges."
+msgstr "呼び出したスレッドが適切な特権を持っていない。"
#. type: Plain text
-#: build/C/man2/setns.2:51
-msgid "I<fd> must refer to a network namespace."
-msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
+#: 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 ""
-#. type: TP
-#: build/C/man2/setns.2:51
-#, no-wrap
-msgid "B<CLONE_NEWUTS>"
-msgstr "B<CLONE_NEWUTS>"
+#. FIXME Add glibc version
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:351
+#, fuzzy
+#| msgid "The B<kcmp>() system call first appeared in Linux 3.5."
+msgid "These system calls first appeared in Linux 3.14."
+msgstr "B<kcmp>() システムコールは Linux 3.5 で初めて登場した。"
+
+#. type: Plain text
+#: build/C/man2/sched_setattr.2:353
+#, fuzzy
+#| msgid "These system calls are Linux-specific."
+msgid "These system calls are nonstandard Linux extensions."
+msgstr "これらのシステムコールは Linux 固有である。"
+
+#. 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:406
+#, fuzzy
+#| msgid ""
+#| "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+#| "B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+#| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
+#| "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
+#| "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+msgid ""
+"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+"B<sched_getaffinity>(2), B<sched_getscheduler>(2), B<sched_getparam>(2), "
+"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
+"B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_yield>(2), "
+"B<setpriority>(2), B<pthread_getschedparam>(3), B<pthread_setschedparam>(3), "
+"B<pthread_setschedprio>(3), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+msgstr ""
+"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
+"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
+"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+
+#. type: TH
+#: build/C/man2/sched_setparam.2:30
+#, no-wrap
+msgid "SCHED_SETPARAM"
+msgstr "SCHED_SETPARAM"
+
+#. type: TH
+#: build/C/man2/sched_setparam.2:30
+#, no-wrap
+msgid "2014-05-11"
+msgstr "2014-05-11"
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:33
+msgid "sched_setparam, sched_getparam - set and get scheduling parameters"
+msgstr ""
+"sched_setparam, sched_getparam - スケジューリングパラメータの設定と取得を行な"
+"う"
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:38
+#, no-wrap
+msgid "B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param *>I<param>B<);>\n"
+msgstr "B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param *>I<param>B<);>\n"
+
+#. 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"
+msgstr "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
+
+#. 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 ""
+"B<struct sched_param {\n"
+" ...\n"
+" int >I<sched_priority>B<;\n"
+" ...\n"
+"};>\n"
+
+#. 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 ""
+"B<sched_setparam>() は I<pid> で指定されたプロセスのスケジューリング方針 "
+"(scheduling policy) に 関連するスケジューリングパラメータを設定する。 I<pid> "
+"が 0 ならば、呼び出し元のプロセスのパラメータが設定される。 引き数 I<param> "
+"の解釈は、 I<pid> で指定されたプロセスのスケジューリング方針によって異なる。 "
+"Linux でサポートされているスケジューリング方針の説明は B<sched>(7) を参照の"
+"こと。"
+
+#. 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 ""
+"B<sched_getparam>() は I<pid> で指定されたプロセスのスケジューリングパラメー"
+"タを取得する。 I<pid> が 0 ならば、呼び出し元のプロセスのパラメータを取得す"
+"る。"
+
+#. 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 ""
+"B<sched_setparam>() はスレッドのスケジューリング方針における I<param> の妥当"
+"性をチェックする。 I<param-E<gt>sched_priority> の値は "
+"B<sched_get_priority_min>(2) と B<sched_get_priority_max>(2) の範囲に入って"
+"いなければならない。"
+
+#. 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 ""
+"スケジューリングの優先度と方針に関連する特権とリソース制限の 議論に関しては "
+"B<sched>(7) を参照のこと。"
+
+#. 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 ""
+"B<sched_setparam>() と B<sched_getparam>() が使用できる POSIX システムで"
+"は、 I<E<lt>unistd.hE<gt>> に B<_POSIX_PRIORITY_SCHEDULING> が定義されてい"
+"る。"
+
+#. 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 ""
+"成功した場合は B<sched_setparam>() と B<sched_getparam>() は 0 を返す。 エ"
+"ラーの場合は -1 が返され、 I<errno> が適切に設定される。"
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:104
+msgid "Invalid arguments: I<param> is NULL or I<pid> is negative"
+msgstr "無効な引き数: I<param> が NULL である、または I<pid> が負である。"
+
+#. 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 ""
+"(B<sched_setparam>()) 引き数 I<param> が現在のスケジューリング方針においては "
+"無意味である。"
+
+#. 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 ""
+"(B<sched_setparam>()) 呼び出し元のプロセスが適切な特権を持っていない (Linux "
+"では、 B<CAP_SYS_NICE> ケーパビリティを持っていない)。"
+
+#. type: Plain text
+#: build/C/man2/sched_setparam.2:119
+msgid "The process whose ID is I<pid> could not be found."
+msgstr "プロセス ID I<pid> のプロセスが見つからなかった。"
+
+#. 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 ""
+"Linux では、スケジューリングパラメータは実際にはスレッド単位の属性である。 "
+"B<sched>(7) 参照。"
+
+#. 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 ""
+"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)"
+
+#. type: TH
+#: build/C/man2/sched_setscheduler.2:26
+#, no-wrap
+msgid "SCHED_SETSCHEDULER"
+msgstr "SCHED_SETSCHEDULER"
+
+#. type: TH
+#: build/C/man2/sched_setscheduler.2:26
+#, no-wrap
+msgid "2014-05-21"
+msgstr "2014-05-21"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:30
+msgid ""
+"sched_setscheduler, sched_getscheduler - set and get scheduling policy/"
+"parameters"
+msgstr ""
+"sched_setscheduler, sched_getscheduler - スケジューリングポリシーとパラメータ"
+"を設定/取得する"
+
+#. 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 "B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:37
+#, no-wrap
+msgid "B< const struct sched_param *>I<param>B<);>\n"
+msgstr "B< const struct sched_param *>I<param>B<);>\n"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:39
+#, no-wrap
+msgid "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
+msgstr "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
+
+#. 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 ""
+"B<sched_setscheduler>() システムコールは、 I<pid> で指定された ID を持つス"
+"レッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定す"
+"る。 I<pid> が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとス"
+"ケジューリングパラメーターが設定される。"
+
+#. 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 ""
+"struct sched_param {\n"
+" ...\n"
+" int sched_priority;\n"
+" ...\n"
+"};\n"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:69
+msgid ""
+"In the current implementation, the structure contains only one field, "
+"I<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_min>(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 ""
+"Linux 2.6.32 以降では、 B<sched_setscheduler>() を呼び出す際に I<policy> に "
+"B<SCHED_RESET_ON_FORK> フラグを OR で指定できる。このフラグが指定されると、 "
+"B<fork>(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承"
+"しない。 詳細は B<sched>(7) を参照。"
+
+#. 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 ""
+"B<sched_getscheduler>() は I<pid> で識別されるスレッドの現在のスケジューリン"
+"グポリシーを返す。I<pid> が 0 ならば、呼び出した スレッド自身のスケジューリン"
+"グポリシーが返される。"
+
+#. 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 ""
+"成功した場合、 B<sched_setscheduler>() は 0 を返す。 成功した場合、 "
+"B<sched_getscheduler>() は現在のそのスレッドのポリシー (非負の整数) を返"
+"す。 エラーの場合、 どちらのコールも -1 を返し、 I<errno> が適切に設定され"
+"る。"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:153
+msgid "Invalid arguments: I<pid> is negative or I<param> is NULL."
+msgstr "無効な引き数: I<pid> が負である、または I<param> が NULL である。"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:158
+msgid ""
+"(B<sched_setscheduler>()) I<policy> is not one of the recognized policies."
+msgstr "(B<sched_setscheduler>()) I<policy> が認識できるポリシーではない。"
+
+#. 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 ""
+"(B<sched_setscheduler>()) 引き数 I<param> が指定された I<policy> では意味を持"
+"たない。"
+
+#. 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 ""
+"POSIX.1-2001 (但し、下記のバグの節も参照)。 B<SCHED_BATCH> と B<SCHED_IDLE> "
+"ポリシーは Linux 固有である。"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:177
+msgid ""
+"Further details of the semantics of all of the above \"normal\" and \"real-"
+"time\" scheduling policies can be found in B<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 ""
+"POSIX システムでは I<E<lt>unistd.hE<gt>> に B<_POSIX_PRIORITY_SCHEDULING> が"
+"定義されている場合にのみ B<sched_setscheduler>() と "
+"B<sched_getscheduler>() が使用できる。"
+
+#. 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 ""
+"POSIX.1 は、非特権スレッドが B<sched_setscheduler>() を呼び出すために必要な"
+"権限の詳細を規定しておらず、 詳細はシステムにより異なる。 例えば、Solaris 7 "
+"のマニュアルページでは、 呼び出し元の実ユーザ ID または実効ユーザ ID が 設定"
+"対象の実ユーザ ID か保存 (save) set-user-ID と 一致していなければならない、と"
+"なっている。"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:214
+msgid ""
+"The scheduling policy and parameters are in fact per-thread attributes on "
+"Linux. The value returned from a call to B<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 ""
+"Linux では、 スケジューリングポリシーとスケジューリングパラメータは、 実際に"
+"はスレッド単位の属性である。 B<gettid>(2) の呼び出しの返り値をこのシステム"
+"コールの I<pid> 引き数として渡すことができる。 I<pid> に 0 を指定すると、 呼"
+"び出し元のスレッドの属性が設定される。 B<getpid>(2) コールからの返り値を "
+"I<pid> に指定すると、 スレッドグループのメインスレッドの属性が設定される "
+"(POSIX スレッド API を使用している場合は、 B<sched_*>(2) システムコールの代わ"
+"りに B<pthread_setschedparam>(3), B<pthread_getschedparam>(3), and "
+"B<pthread_setschedprio>(3) を使用すること)。"
+
+#. 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 ""
+"POSIX では、成功時に B<sched_setscheduler>() は直前のスケジューリングポリ"
+"シーを返すべきとされている。 Linux の B<sched_setscheduler>() はこの要求仕様"
+"に準拠しておらず、 成功時には常に 0 を返す。"
+
+#. type: Plain text
+#: build/C/man2/sched_setscheduler.2:240
+msgid ""
+"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
+"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
+"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+msgstr ""
+"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
+"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
+"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+
+#. type: TH
+#: build/C/man2/sched_yield.2:29
+#, no-wrap
+msgid "SCHED_YIELD"
+msgstr "SCHED_YIELD"
+
+#. type: Plain text
+#: build/C/man2/sched_yield.2:32
+msgid "sched_yield - yield the processor"
+msgstr "sched_yield - プロセッサーを空け渡す(yield)"
+
+#. type: Plain text
+#: build/C/man2/sched_yield.2:36
+msgid "B<int sched_yield(void);>"
+msgstr "B<int sched_yield(void);>"
+
+#. 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 ""
+"B<sched_yield>() を呼び出すことで、呼び出したスレッドが CPU の使用権を手放す"
+"ことができる。 そのスレッドは、そのスレッドの静的プライオリティのキューの末尾"
+"に 移動し、新しいスレッドが走り始める。"
+
+#. 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 ""
+"成功した場合は B<sched_yield>() は 0 を返す。 エラーの場合は -1 が返され、 "
+"I<errno> が適切に設定される。"
+
+#. type: Plain text
+#: build/C/man2/sched_yield.2:52
+msgid "In the Linux implementation, B<sched_yield>() always succeeds."
+msgstr "Linux の実装では、 B<sched_yield>() は常に成功する。"
+
+#. 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 ""
+"B<sched_yield>() を呼び出した時点で最大優先度のリストの中に呼び出し元のス"
+"レッドしか 存在しなければ、そのスレッドは呼び出し後も走り続けることになる。"
+
+#. type: Plain text
+#: build/C/man2/sched_yield.2:66
+msgid ""
+"POSIX systems on which B<sched_yield>() is available define "
+"B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
+msgstr ""
+"POSIX システムで B<sched_yield>() は I<E<lt>unistd.hE<gt>> に "
+"B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。"
+
+#. type: Plain text
+#: build/C/man2/sched_yield.2:79
+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 ""
+"B<sched_yield>() を戦略的に呼び出すことで、(極度に) 競合するリソース (mutex "
+"など) を呼び出し元が解放した際に他のスレッドやプロセスに実行機会を与えること"
+"で、 性能を上げることができる。 B<sched_yield>() を必要もないのに呼び出した"
+"り、不適切な場面 (例えば、他のスケジューリング 対象となるスレッドが必要とする"
+"リソースを呼び出し元が保持したままの状態) で呼び出したりするのは避けること。"
+"なぜなら、 B<sched_yield>() の呼び出しより不必要なコンテキストスイッチが起こ"
+"り、システム性能が 劣化する結果になるからである。"
+
+#. type: TH
+#: build/C/man2/setns.2:8
+#, no-wrap
+msgid "SETNS"
+msgstr "SETNS"
+
+#. type: TH
+#: build/C/man2/setns.2:8
+#, no-wrap
+msgid "2013-01-01"
+msgstr "2013-01-01"
+
+#. type: Plain text
+#: build/C/man2/setns.2:11
+msgid "setns - reassociate thread with a namespace"
+msgstr "setns - スレッドに名前空間を関連付けしなおす"
+
+#. type: Plain text
+#: build/C/man2/setns.2:17
+#, no-wrap
+msgid "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
+msgstr "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:21
+msgid ""
+"Given a file descriptor referring to a namespace, reassociate the calling "
+"thread with that namespace."
+msgstr ""
+"名前空間を参照するファイルディスクリプタを指定すると、\n"
+"呼び出したスレッドにその名前空間を関連付けしなおす。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:34
+msgid ""
+"The I<fd> argument is a file descriptor referring to one of the namespace "
+"entries in a I</proc/[pid]/ns/> directory; see B<proc>(5) for further "
+"information on I</proc/[pid]/ns/>. The calling thread will be reassociated "
+"with the corresponding namespace, subject to any constraints imposed by the "
+"I<nstype> argument."
+msgstr ""
+"I<fd> 引き数は、 I</proc/[pid]/ns/> ディレクトリ内の名前空間エントリ\n"
+"のいずれかを参照するファイルディスクリプタである。\n"
+"I</proc/[pid]/ns/> の詳細は B<proc>(5) を参照。\n"
+"I<nstype> 引き数で指定された制限の範囲内で、\n"
+"呼び出したスレッドに I<fd> に対応する名前空間を関連付けしなおす。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:40
+msgid ""
+"The I<nstype> argument specifies which type of namespace the calling thread "
+"may be reassociated with. This argument can have one of the following "
+"values:"
+msgstr ""
+"I<nstype> 引き数は、呼び出したスレッドがどのタイプの名前空間を\n"
+"関連付けしなおすことができるかを指定する。\n"
+"この引き数には以下のいずれかの値を指定できる。"
+
+#. type: TP
+#: build/C/man2/setns.2:40
+#, no-wrap
+msgid "B<0>"
+msgstr "B<0>"
+
+#. type: Plain text
+#: build/C/man2/setns.2:43
+msgid "Allow any type of namespace to be joined."
+msgstr "どのタイプの名前空間も関連付けることができる。"
+
+#. type: TP
+#: build/C/man2/setns.2:43
+#, no-wrap
+msgid "B<CLONE_NEWIPC>"
+msgstr "B<CLONE_NEWIPC>"
+
+#. type: Plain text
+#: build/C/man2/setns.2:47
+msgid "I<fd> must refer to an IPC namespace."
+msgstr "I<fd> は IPC 名前空間を参照していなければならない。"
+
+#. type: TP
+#: build/C/man2/setns.2:47
+#, no-wrap
+msgid "B<CLONE_NEWNET>"
+msgstr "B<CLONE_NEWNET>"
+
+#. type: Plain text
+#: build/C/man2/setns.2:51
+msgid "I<fd> must refer to a network namespace."
+msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
+
+#. type: TP
+#: build/C/man2/setns.2:51
+#, no-wrap
+msgid "B<CLONE_NEWUTS>"
+msgstr "B<CLONE_NEWUTS>"
#. type: Plain text
#: build/C/man2/setns.2:55
msgstr "I<fd> は UTS 名前空間を参照していなければならない。"
#. type: Plain text
-#: build/C/man2/setns.2:70
+#: build/C/man2/setns.2:70
+msgid ""
+"Specifying I<nstype> as 0 suffices if the caller knows (or does not care) "
+"what type of namespace is referred to by I<fd>. Specifying a nonzero value "
+"for I<nstype> is useful if the caller does not know what type of namespace "
+"is referred to by I<fd> and wants to ensure that the namespace is of a "
+"particular type. (The caller might not know the type of the namespace "
+"referred to by I<fd> if the file descriptor was opened by another process "
+"and, for example, passed to the caller via a UNIX domain socket.)"
+msgstr ""
+"呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを知っている\n"
+"(もしくは気にする必要がない) 場合には、 I<nstype> に 0 を指定すれば十分\n"
+"である。呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを\n"
+"知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、\n"
+"I<nstype> に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の\n"
+"プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し\n"
+"側に渡された場合などでは、呼び出し側が I<fd> がどのタイプの名前空間を\n"
+"参照しているかを知らない可能性がある。)"
+
+#. type: Plain text
+#: build/C/man2/setns.2:77
+msgid ""
+"On success, I<setns>() returns 0. On failure, -1 is returned and I<errno> "
+"is set to indicate the error."
+msgstr ""
+"成功すると I<setns>() は 0 を返す。\n"
+"失敗すると、 -1 が返され、 I<errno> にエラーを示す値が設定される。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:82
+msgid "I<fd> is not a valid file descriptor."
+msgstr "I<fd> が有効なファイルディスクリプタではない。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:89
+msgid ""
+"I<fd> refers to a namespace whose type does not match that specified in "
+"I<nstype>, or there is problem with reassociating the the thread with the "
+"specified namespace."
+msgstr ""
+"I<fd> が I<nstype> で指定されたタイプと一致しない名前空間を参照している。\n"
+"または、指定された名前空間をそのスレッドに関連付けし直す際に問題\n"
+"があった。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:92
+msgid "Cannot allocate sufficient memory to change the specified namespace."
+msgstr "指定された名前空間に変更するのに必要なメモリが割り当てられない。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:97
+msgid ""
+"The calling thread did not have the required privilege (B<CAP_SYS_ADMIN>) "
+"for this operation."
+msgstr ""
+"呼び出したスレッドがこの操作を行うのに必要な特権 (B<CAP_SYS_ADMIN>) を\n"
+"持っていなかった。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:102
+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 ""
+"B<setns>() システムコールはカーネル 3.0 で Linux に初めて登場した。\n"
+"ライブラリによるサポートは glibc バージョン 2.14 を追加された。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:106
+msgid "The B<setns>() system call is Linux-specific."
+msgstr "B<setns>() システムコールは Linux 固有である。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:112
+msgid ""
+"Not all of the attributes that can be shared when a new thread is created "
+"using B<clone>(2) can be changed using B<setns>()."
+msgstr ""
+"新しいスレッドが B<clone>(2) を使って作成された際に共有できる全ての属性を、\n"
+"B<setns>() を使って変更できるわけではない。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:121
+msgid ""
+"The program below takes two or more arguments. The first argument specifies "
+"the pathname of a namespace file in an existing I</proc/[pid]/ns/> "
+"directory. The remaining arguments specify a command and its arguments. "
+"The program opens the namespace file, joins that namespace using B<setns>(), "
+"and executes the specified command inside that namespace."
+msgstr ""
+"以下のプログラムは 2 つ以上の引き数を取る。 最初の引き数には、 既存の I</"
+"proc/[pid]/ns/> ディレクトリの名前空間ファイルのパス名を指定する。 残りの引き"
+"数は、コマンドとその引き数を指定する。 このプログラムは名前空間ファイルをオー"
+"プンし、 B<setns>() を使って名前空間に参加し、 指定されたコマンドをその名前空"
+"間内で実行する。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:131
+msgid ""
+"The following shell session demonstrates the use of this program (compiled "
+"as a binary named I<ns_exec>) in conjunction with the B<CLONE_NEWUTS> "
+"example program in the B<clone>(2) man page (complied as a binary named "
+"I<newuts>)."
+msgstr ""
+"以下のシェルセッションでは、 このプログラム (I<ns_exec> という名前のバイナリ"
+"としてコンパイルされている)を、 B<clone>(2) のマニュアルページの "
+"B<CLONE_NEWUTS> のサンプルプログラムと組み合わせて使っている。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:139
+msgid ""
+"We begin by executing the example program in B<clone>(2) in the "
+"background. That program creates a child in a separate UTS namespace. The "
+"child changes the hostname in its namespace, and then both processes display "
+"the hostnames in their UTS namespaces, so that we can see that they are "
+"different."
+msgstr ""
+"まず、 B<clone>(2) のサンプルプログラムをバックグラウンドで実行する。 このプ"
+"ログラムは、 別の UTS 名前空間で子プロセスを作成する。 子プロセスは自分の名前"
+"空間内でホスト名を変更する。 それから、 親プロセスと子プロセスの両方でそれぞ"
+"れの UTS 名前空間のホスト名を表示し、 2 つのホスト名が違うことが確認できる。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:151
+#, no-wrap
+msgid ""
+"$ B<su> # Need privilege for namespace operations\n"
+"Password:\n"
+"# B<./newuts bizarro &>\n"
+"[1] 3549\n"
+"clone() returned 3550\n"
+"uts.nodename in child: bizarro\n"
+"uts.nodename in parent: antero\n"
+"# B<uname -n> # Verify hostname in the shell\n"
+"antero\n"
+msgstr ""
+"$ B<su> # 名前空間の操作には特権が必要\n"
+"Password:\n"
+"# B<./newuts bizarro &>\n"
+"[1] 3549\n"
+"clone() returned 3550\n"
+"uts.nodename in child: bizarro\n"
+"uts.nodename in parent: antero\n"
+"# B<uname -n> # シェルでホスト名を確認\n"
+"antero\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:158
+msgid ""
+"We then run the program shown below, using it to execute a shell. Inside "
+"that shell, we verify that the hostname is the one set by the child created "
+"by the first program:"
+msgstr ""
+"次に、以下のプログラムを使ってシェルを実行する。 このシェルの中では、ホスト名"
+"が最初のプログラムで作成された子プロセスが設定したホスト名になっていることを"
+"確認できる。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:164
+#, no-wrap
+msgid ""
+"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
+"# B<uname -n> # Executed in shell started by ns_exec\n"
+"bizarro\n"
+msgstr ""
+"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
+"# B<uname -n> # ns_exec で起動されたシェル内で実行\n"
+"bizarro\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:174
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>sched.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+msgstr ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>sched.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:182
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int fd;\n"
+msgstr ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int fd;\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:187
+#, no-wrap
+msgid ""
+" if (argc E<lt> 3) {\n"
+" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+" if (argc E<lt> 3) {\n"
+" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:191
+#, no-wrap
+msgid ""
+" fd = open(argv[1], O_RDONLY); /* Get descriptor for namespace */\n"
+" if (fd == -1)\n"
+" errExit(\"open\");\n"
+msgstr ""
+" fd = open(argv[1], O_RDONLY); /* 名前空間のディスクリプタを取得 */\n"
+" if (fd == -1)\n"
+" errExit(\"open\");\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:194
+#, no-wrap
+msgid ""
+" if (setns(fd, 0) == -1) /* Join that namespace */\n"
+" errExit(\"setns\");\n"
+msgstr ""
+" if (setns(fd, 0) == -1) /* 名前空間に参加 */\n"
+" errExit(\"setns\");\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:198
+#, no-wrap
+msgid ""
+" execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
+" errExit(\"execvp\");\n"
+"}\n"
+msgstr ""
+" execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */\n"
+" errExit(\"execvp\");\n"
+"}\n"
+
+#. type: Plain text
+#: build/C/man2/setns.2:205
+msgid "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
+msgstr "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
+
+#. type: TH
+#: build/C/man2/unshare.2:20
+#, no-wrap
+msgid "UNSHARE"
+msgstr "UNSHARE"
+
+#. type: TH
+#: build/C/man2/unshare.2:20
+#, no-wrap
+msgid "2013-04-17"
+msgstr "2013-04-17"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:23
+msgid "unshare - disassociate parts of the process execution context"
+msgstr "unshare - プロセス実行コンテキストの一部を分離する"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:28
+#, no-wrap
+msgid "B<int unshare(int >I<flags>B<);>\n"
+msgstr "B<int unshare(int >I<flags>B<);>\n"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:36
+msgid "B<unshare>():"
+msgstr "B<unshare>():"
+
+#. 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 "
+"execution context, such as the mount namespace, is shared implicitly when a "
+"new process is created using B<fork>(2) or B<vfork>(2), while other parts, "
+"such as virtual memory, may be shared by explicit request when creating a "
+"process using B<clone>(2)."
+msgstr ""
+"B<unshare>() を使うと、プロセスは他のプロセスと現在共有している 実行コンテキ"
+"ストの一部を分離することができる。 実行コンテキストの一部、たとえばマウント名"
+"前空間 (mount namespace) などは、新しいプロセスを B<fork>(2) または "
+"B<vfork>(2) を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモ"
+"リなどは、 B<clone>(2) を使ってプロセスを生成するときに、明示的に共有するこ"
+"とを要求できる。"
+
+#. type: Plain text
+#: 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 ""
+"B<unshare>() の主な利用法は、プロセスが新しいプロセスを生成することなく、 共"
+"有実行コンテキストを制御することである。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:74
+msgid ""
+"The I<flags> argument is a bit mask that specifies which parts of the "
+"execution context should be unshared. This argument is specified by ORing "
+"together zero or more of the following constants:"
+msgstr ""
+"I<flags> 引き数はビットマスクであり、 実行コンテキストのどの部分の共有を解除"
+"するかを表す。 この引き数は、以下の定数の 0 個以上の OR で指定する:"
+
+#. type: TP
+#: build/C/man2/unshare.2:74
+#, no-wrap
+msgid "B<CLONE_FILES>"
+msgstr "B<CLONE_FILES>"
+
+#. type: Plain text
+#: 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 "
+"descriptors with any other process."
+msgstr ""
+"B<clone>(2) B<CLONE_FILES> フラグの効果を取り消す。 ファイルディスクリプタ"
+"テーブルを共有させず、 呼び出し元プロセスは他のプロセスとファイルディスクリプ"
+"タを共有しなくなる。"
+
+#. type: TP
+#: build/C/man2/unshare.2:82
+#, no-wrap
+msgid "B<CLONE_FS>"
+msgstr "B<CLONE_FS>"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:96
+msgid ""
+"Reverse the effect of the B<clone>(2) B<CLONE_FS> flag. Unshare filesystem "
+"attributes, so that the calling process no longer shares its root directory "
+"(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2)) "
+"attributes with any other process."
+msgstr ""
+"B<clone>(2) B<CLONE_FS> フラグの効果を取り消す。ファイルシステム属性を共有さ"
+"せず、呼び出し元プロセスは、ルートディレクトリ (B<chroot>(2))、カレントディレ"
+"クトリ (B<chdir>(2))、 umask (B<umask>(2)) を他のプロセスと共有しなくなる。"
+
+#. type: Plain text
+#: 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 "
+"other process. Specifying this flag automatically implies B<CLONE_SYSVSEM> "
+"as well. Use of B<CLONE_NEWIPC> requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+"このフラグは B<clone>(2) B<CLONE_NEWIPC> フラグと同じ効果を持つ。\n"
+"System\\ V IPC 名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは\n"
+"共有しない固有の System\\ V IPC 名前空間のコピーを持つ。 このフラグを指定\n"
+"すると、 B<CLONE_SYSVSEM> も暗黙のうちに指定される。 B<CLONE_NEWIPC> を\n"
+"使用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:128
+msgid ""
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
+"Unshare the network namespace, so that the calling process is moved into a "
+"new network namespace which is not shared with any previously existing "
+"process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+"このフラグは B<clone>(2) B<CLONE_NEWNET> フラグと同じ効果を持つ。ネット\n"
+"ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n"
+"い固有のネットワーク名前空間のコピーを持つ。B<CLONE_NEWNET> を使用する\n"
+"には B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+
+#. type: TP
+#: build/C/man2/unshare.2:128
+#, no-wrap
+msgid "B<CLONE_NEWNS>"
+msgstr "B<CLONE_NEWNS>"
+
+#. These flag name are inconsistent:
+#. CLONE_NEWNS does the same thing in clone(), but CLONE_VM,
+#. CLONE_FS, and CLONE_FILES reverse the action of the clone()
+#. flags of the same name.
+#. type: Plain text
+#: build/C/man2/unshare.2:149
+msgid ""
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
+"Unshare the mount namespace, so that the calling process has a private copy "
+"of its namespace which is not shared with any other process. Specifying "
+"this flag automatically implies B<CLONE_FS> as well. Use of B<CLONE_NEWNS> "
+"requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+"このフラグは B<clone>(2) B<CLONE_NEWNS> フラグと同じ効果を持つ。 マウン\n"
+"ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固\n"
+"有の名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_FS> も暗\n"
+"黙のうちに指定される。 B<CLONE_NEWNS> を使用するには B<CAP_SYS_ADMIN>\n"
+"ケーパビリティが必要である。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:163
+msgid ""
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWUTS> flag. "
+"Unshare the UTS IPC namespace, so that the calling process has a private "
+"copy of the UTS namespace which is not shared with any other process. Use "
+"of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+"このフラグは B<clone>(2) B<CLONE_NEWUTS> フラグと同じ効果を持つ。 UTS\n"
+"IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない\n"
+"固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、\n"
+"B<CLONE_FS> も暗黙のうちに指定される。B<CLONE_NEWUTS> を使用するには\n"
+"B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+
+#. type: TP
+#: build/C/man2/unshare.2:163
+#, no-wrap
+msgid "B<CLONE_SYSVSEM> (since Linux 2.6.26)"
+msgstr "B<CLONE_SYSVSEM> (Linux 2.6.26 以降)"
+
+#. commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7
+#. As at 2.6.16, the following forced implications also apply,
+#. although the relevant flags are not yet implemented.
+#. If CLONE_THREAD is set force CLONE_VM.
+#. If CLONE_VM is set, force CLONE_SIGHAND.
+#. CLONE_NEWNSIf CLONE_SIGHAND is set and signals are also being shared
+#. (i.e., current->signal->count > 1), force CLONE_THREAD.
+#. FIXME . CLONE_VM is not (yet, as at 2.6.16) implemented.
+#. .TP
+#. .B CLONE_VM
+#. Reverse the effect of the
+#. .BR clone (2)
+#. .B CLONE_VM
+#. flag.
+#. .RB ( CLONE_VM
+#. is also implicitly set by
+#. .BR vfork (2),
+#. and can be reversed using this
+#. .BR unshare ()
+#. flag.)
+#. Unshare virtual memory, so that the calling process no
+#. longer shares its virtual address space with any other process.
+#. type: Plain text
+#: build/C/man2/unshare.2:200
+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."
+msgstr ""
+"このフラグは B<clone>(2) B<CLONE_SYSVSEM> フラグの効果を逆転させる。\n"
+"System\\ V セマフォのアンドゥ値を共有せず、呼び出し元プロセスは 他のプロ\n"
+"セスとは共有しない固有のコピーを持つ。B<CLONE_SYSVSEM> を使用するには\n"
+"B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:207
+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 ""
+"I<flags> に 0 が指定された場合、 B<unshare>() は何も行わないので、 呼び出し"
+"元プロセスの実行コンテキストは、何も変更されない。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:212
+msgid ""
+"On success, zero returned. On failure, -1 is returned and I<errno> is set "
+"to indicate the error."
+msgstr ""
+"成功した場合は 0 が返される。 失敗した場合は -1 が返されて、 I<errno> にはエ"
+"ラーを示す値が設定される。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:217
+msgid "An invalid bit was specified in I<flags>."
+msgstr "I<flags> に不正なビットが指定された。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:221
+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:224
+msgid ""
+"The calling process did not have the required privileges for this operation."
+msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:228
+msgid "The B<unshare>() system call was added to Linux in kernel 2.6.16."
+msgstr "B<unshare>() システムコールは Linux カーネル 2.6.16 で追加された。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:232
+msgid "The B<unshare>() system call is Linux-specific."
+msgstr "B<unshare>() システムコールは Linux 固有である。"
+
+#. FIXME all of the following needs to be reviewed for the current kernel
+#. However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND
+#. was not specified when doing clone(); i.e., unsharing
+#. signal handlers is permitted if we are not actually
+#. sharing signal handlers. mtk
+#. However, we can do unshare(CLONE_VM) if CLONE_VM
+#. was not specified when doing clone(); i.e., unsharing
+#. virtual memory is permitted if we are not actually
+#. sharing virtual memory. mtk
+#. 9) Future Work
+#. --------------
+#. The current implementation of unshare does not allow unsharing of
+#. signals and signal handlers. Signals are complex to begin with and
+#. to unshare signals and/or signal handlers of a currently running
+#. process is even more complex. If in the future there is a specific
+#. need to allow unsharing of signals and/or signal handlers, it can
+#. be incrementally added to unshare without affecting legacy
+#. applications using unshare.
+#. type: Plain text
+#: build/C/man2/unshare.2:266
+msgid ""
+"Not all of the process attributes that can be shared when a new process is "
+"created using B<clone>(2) can be unshared using B<unshare>(). In "
+"particular, as at kernel 3.8, B<unshare>() does not implement flags that "
+"reverse the effects of B<CLONE_SIGHAND>, B<CLONE_THREAD>, or B<CLONE_VM>. "
+"Such functionality may be added in the future, if required."
+msgstr ""
+"B<clone>(2) で新しいプロセスを生成したときに共有される全てのプロセス属性"
+"を、 B<unshare>() によって共有の解除ができるわけではない。 特に、カーネル "
+"3.8 時点では、 B<unshare>() に B<CLONE_SIGHAND>, B<CLONE_THREAD>, "
+"B<CLONE_VM> の効果を取り消すためのフラグが実装されていない。 これらの機能は、"
+"必要であれば将来追加されるかもしれない。"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:272
+msgid "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
+msgstr "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
+
+#. type: Plain text
+#: build/C/man2/unshare.2:275
+msgid "I<Documentation/unshare.txt> in the Linux kernel source tree"
+msgstr "Linux カーネルソース内の I<Documentation/unshare.txt>"
+
+#. type: TH
+#: build/C/man7/sched.7:32
+#, fuzzy, no-wrap
+#| msgid "B<SCHED_RR>"
+msgid "SCHED"
+msgstr "B<SCHED_RR>"
+
+#. type: Plain text
+#: build/C/man7/sched.7:35
+msgid "sched - overview of scheduling APIs"
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:36
+#, no-wrap
+msgid "API summary"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:38
+msgid "The Linux scheduling APIs are as follows:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:38
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_setscheduler>(2)"
+msgstr "B<sched_getcpu>():"
+
+#. type: Plain text
+#: build/C/man7/sched.7:41
+msgid "Set the scheduling policy and parameters of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:41
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_getscheduler>(2)"
+msgstr "B<sched_getcpu>():"
+
+#. type: Plain text
+#: build/C/man7/sched.7:44
+#, fuzzy
+#| msgid "Resetting scheduling policy for child processes"
+msgid "Return the scheduling policy of a specified thread."
+msgstr "子プロセスでのスケジューリングポリシーのリセット"
+
+#. type: TP
+#: build/C/man7/sched.7:44
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_setparam>(2)"
+msgstr "B<sched_getcpu>():"
+
+#. type: Plain text
+#: build/C/man7/sched.7:47
+msgid "Set the scheduling parameters of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:47
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_getparam>(2)"
+msgstr "B<sched_getcpu>():"
+
+#. type: Plain text
+#: build/C/man7/sched.7:50
+msgid "Fetch the scheduling parameters of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:50
+#, fuzzy, no-wrap
+#| msgid "B<int sched_get_priority_max(int >I<policy>B<);>"
+msgid "B<sched_get_priority_max>(2)"
+msgstr "B<int sched_get_priority_max(int >I<policy>B<);>"
+
+#. type: Plain text
+#: build/C/man7/sched.7:53
+#, fuzzy
+#| msgid ""
+#| "The argument I<policy> does not identify a defined scheduling policy."
+msgid "Return the minimum priority available in a specified scheduling policy."
+msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
+
+#. type: TP
+#: build/C/man7/sched.7:53
+#, fuzzy, no-wrap
+#| msgid "B<int sched_get_priority_min(int >I<policy>B<);>"
+msgid "B<sched_get_priority_min>(2)"
+msgstr "B<int sched_get_priority_min(int >I<policy>B<);>"
+
+#. type: Plain text
+#: build/C/man7/sched.7:56
+#, fuzzy
+#| msgid ""
+#| "The argument I<policy> does not identify a defined scheduling policy."
+msgid "Return the maximum priority available in a specified scheduling policy."
+msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
+
+#. type: TP
+#: build/C/man7/sched.7:56
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_rr_get_interval>(2)"
+msgstr "B<sched_getcpu>():"
+
+#. type: Plain text
+#: build/C/man7/sched.7:60
msgid ""
-"Specifying I<nstype> as 0 suffices if the caller knows (or does not care) "
-"what type of namespace is referred to by I<fd>. Specifying a nonzero value "
-"for I<nstype> is useful if the caller does not know what type of namespace "
-"is referred to by I<fd> and wants to ensure that the namespace is of a "
-"particular type. (The caller might not know the type of the namespace "
-"referred to by I<fd> if the file descriptor was opened by another process "
-"and, for example, passed to the caller via a UNIX domain socket.)"
+"Fetch the quantum used for threads that are scheduled under the \"round-robin"
+"\" scheduling policy."
msgstr ""
-"呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを知っている\n"
-"(もしくは気にする必要がない) 場合には、 I<nstype> に 0 を指定すれば十分\n"
-"である。呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを\n"
-"知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、\n"
-"I<nstype> に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の\n"
-"プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し\n"
-"側に渡された場合などでは、呼び出し側が I<fd> がどのタイプの名前空間を\n"
-"参照しているかを知らない可能性がある。)"
+
+#. type: TP
+#: build/C/man7/sched.7:60
+#, fuzzy, no-wrap
+#| msgid "B<int sched_yield(void);>"
+msgid "B<sched_yield>(2)"
+msgstr "B<int sched_yield(void);>"
#. type: Plain text
-#: build/C/man2/setns.2:77
+#: build/C/man7/sched.7:64
msgid ""
-"On success, I<setns>() returns 0. On failure, -1 is returned and I<errno> "
-"is set to indicate the error."
+"Cause the caller to relinquish the CPU, so that some other thread be "
+"executed."
msgstr ""
-"成功すると I<setns>() は 0 を返す。\n"
-"失敗すると、 -1 が返され、 I<errno> にエラーを示す値が設定される。"
+
+#. type: TP
+#: build/C/man7/sched.7:64
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_setaffinity>(2)"
+msgstr "B<sched_getcpu>():"
#. type: Plain text
-#: build/C/man2/setns.2:82
-msgid "I<fd> is not a valid file descriptor."
-msgstr "I<fd> が有効なファイルディスクリプタではない。"
+#: build/C/man7/sched.7:68
+msgid "(Linux-specific) Set the CPU affinity of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:68
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_getaffinity>(2)"
+msgstr "B<sched_getcpu>():"
#. type: Plain text
-#: build/C/man2/setns.2:89
+#: 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
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_setattr>(2)"
+msgstr "B<sched_getcpu>():"
+
+#. type: Plain text
+#: build/C/man7/sched.7:79
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."
+"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 ""
-"I<fd> が I<nstype> で指定されたタイプと一致しない名前空間を参照している。\n"
-"または、指定された名前空間をそのスレッドに関連付けし直す際に問題\n"
-"があった。"
+
+#. type: TP
+#: build/C/man7/sched.7:79
+#, fuzzy, no-wrap
+#| msgid "B<sched_getcpu>():"
+msgid "B<sched_getattr>(2)"
+msgstr "B<sched_getcpu>():"
#. type: Plain text
-#: build/C/man2/setns.2:92
-msgid "Cannot allocate sufficient memory to change the specified namespace."
-msgstr "指定された名前空間に変更するのに必要なメモリが割り当てられない。"
+#: build/C/man7/sched.7:87
+msgid ""
+"Fetch the scheduling policy and parameters of a specified thread. This "
+"(Linux-specific) system call provides a superset of the functionality of "
+"B<sched_getscheduler>(2) and B<sched_getparam>(2)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:87
+#, no-wrap
+msgid "Scheduling policies"
+msgstr "スケジューリングポリシー (scheduling policy)"
#. type: Plain text
-#: build/C/man2/setns.2:97
+#: build/C/man7/sched.7:95
+#, fuzzy
+#| msgid ""
+#| "The scheduler is the kernel component that decides which runnable thread "
+#| "will be executed by the CPU next. Each thread has an associated "
+#| "scheduling policy and a I<static> scheduling priority, I<sched_priority>; "
+#| "these are the settings that are modified by B<sched_setscheduler>(). The "
+#| "scheduler makes it decisions based on knowledge of the scheduling policy "
+#| "and static priority of all threads on the system."
msgid ""
-"The calling thread did not have the required privilege (B<CAP_SYS_ADMIN>) "
-"for this operation."
+"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 ""
-"呼び出したスレッドがこの操作を行うのに必要な特権 (B<CAP_SYS_ADMIN>) を\n"
-"持っていなかった。"
+"スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行"
+"可能なスレッドを決定するものである。 各々のスレッドには、スケジューリングポリ"
+"シーと 「静的」なスケジューリング優先度 I<sched_priority> が対応付けられ、 こ"
+"れらの設定は B<sched_setscheduler>() で変更できる。 スケジューラは、システム"
+"上の全スレッドのスケジューリングポリシーと 静的優先度に関する知識に基づいて決"
+"定を行う。"
#. type: Plain text
-#: build/C/man2/setns.2:102
+#: build/C/man7/sched.7:100
msgid ""
-"The B<setns>() system call first appeared in Linux in kernel 3.0; library "
-"support was added to glibc in version 2.14."
+"For threads scheduled under one of the normal scheduling policies "
+"(B<SCHED_OTHER>, B<SCHED_IDLE>, B<SCHED_BATCH>), I<sched_priority> is not "
+"used in scheduling decisions (it must be specified as 0)."
msgstr ""
-"B<setns>() システムコールはカーネル 3.0 で Linux に初めて登場した。\n"
-"ライブラリによるサポートは glibc バージョン 2.14 を追加された。"
+"通常のスケジューリングポリシー (B<SCHED_OTHER>, B<SCHED_IDLE>, "
+"B<SCHED_BATCH>) の下でスケジューリングされるスレッドでは、 "
+"I<sched_priority> はスケジューリングの決定に使用されない (I<sched_priority> "
+"には 0 を指定しなければならない)。"
#. type: Plain text
-#: build/C/man2/setns.2:106
-msgid "The B<setns>() system call is Linux-specific."
-msgstr "B<setns>() システムコールは Linux 固有である。"
+#: build/C/man7/sched.7:114
+msgid ""
+"Processes scheduled under one of the real-time policies (B<SCHED_FIFO>, "
+"B<SCHED_RR>) have a I<sched_priority> value in the range 1 (low) to 99 "
+"(high). (As the numbers imply, real-time threads always have higher "
+"priority than normal threads.) Note well: POSIX.1-2001 requires an "
+"implementation to support only a minimum 32 distinct priority levels for the "
+"real-time policies, and some systems supply just this minimum. Portable "
+"programs should use B<sched_get_priority_min>(2) and "
+"B<sched_get_priority_max>(2) to find the range of priorities supported for "
+"a particular policy."
+msgstr ""
+"リアルタイムスケジューリングポリシー (B<SCHED_FIFO>, B<SCHED_RR>) の下でスケ"
+"ジューリングされるスレッドは、 I<sched_priority> の値は 1 (最低) から 99 (最"
+"高) の範囲となる (数字から分かるように、リアルタイムスレッドは常に通常のス"
+"レッドよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1-2001 が要求"
+"しているのは、 リアルタイムポリシーの実装において最低 32 種類の異なる優先度レ"
+"ベルが サポートされることだけであり、いくつかのシステムではこの最低限の数の "
+"優先度しか提供されていない、ということである。 移植性が必要なプログラムで"
+"は、 B<sched_get_priority_min>(2) と B<sched_get_priority_max>(2) を使っ"
+"て、あるポリシーがサポートする優先度の範囲を調べるべきである。"
#. type: Plain text
-#: build/C/man2/setns.2:112
+#: build/C/man7/sched.7:120
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>()."
+"Conceptually, the scheduler maintains a list of runnable threads for each "
+"possible I<sched_priority> value. In order to determine which thread runs "
+"next, the scheduler looks for the nonempty list with the highest static "
+"priority and selects the thread at the head of this list."
msgstr ""
-"新しいスレッドが B<clone>(2) を使って作成された際に共有できる全ての属性を、\n"
-"B<setns>() を使って変更できるわけではない。"
+"概念としては、 スケジューラはその I<sched_priority> の値それぞれに対して 実行"
+"可能なスレッドのリストを管理している。 どのスレッドを次に実行するかを決定する"
+"ために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリス"
+"トの先頭のスレッドを選択する。"
#. type: Plain text
-#: build/C/man2/setns.2:121
+#: build/C/man7/sched.7:124
msgid ""
-"The program below takes two or more arguments. The first argument specifies "
-"the pathname of a namespace file in an existing I</proc/[pid]/ns/> "
-"directory. The remaining arguments specify a command and its arguments. "
-"The program opens the namespace file, joins that namespace using B<setns>(), "
-"and executes the specified command inside that namespace."
+"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 ""
-"以下のプログラムは 2 つ以上の引き数を取る。 最初の引き数には、 既存の I</"
-"proc/[pid]/ns/> ディレクトリの名前空間ファイルのパス名を指定する。 残りの引き"
-"数は、コマンドとその引き数を指定する。 このプログラムは名前空間ファイルをオー"
-"プンし、 B<setns>() を使って名前空間に参加し、 指定されたコマンドをその名前空"
-"間内で実行する。"
+"各スレッドのスケジューリングポリシーは、 そのスレッドが同じ静的優先度を持つス"
+"レッドのリストの中のどこに挿入され、 このリストの中をどのように移動するかを決"
+"定する。"
#. type: Plain text
-#: build/C/man2/setns.2:131
+#: build/C/man7/sched.7:132
msgid ""
-"The following shell session demonstrates the use of this program (compiled "
-"as a binary named I<ns_exec>) in conjunction with the B<CLONE_NEWUTS> "
-"example program in the B<clone>(2) man page (complied as a binary named "
-"I<newuts>)."
+"All scheduling is preemptive: if a thread with a higher static priority "
+"becomes ready to run, the currently running thread will be preempted and "
+"returned to the wait list for its static priority level. The scheduling "
+"policy determines the ordering only within the list of runnable threads with "
+"equal static priority."
msgstr ""
-"以下のシェルセッションでは、 このプログラム (I<ns_exec> という名前のバイナリ"
-"としてコンパイルされている)を、 B<clone>(2) のマニュアルページの "
-"B<CLONE_NEWUTS> のサンプルプログラムと組み合わせて使っている。"
+"全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度"
+"のスレッドが実行可能になると、現在実行中のスレッドは実行権を 取り上げられ "
+"(preempted)、そのスレッドの静的優先度レベルの待ちリストに 戻される。スケ"
+"ジューリングポリシーは同じ静的優先度を持つ実行可能な スレッドのリストの中で順"
+"番のみを決定する。"
+
+#. type: SS
+#: build/C/man7/sched.7:132
+#, no-wrap
+msgid "SCHED_FIFO: First in-first out scheduling"
+msgstr "SCHED_FIFO: ファーストインファーストアウトスケジューリング"
#. type: Plain text
-#: build/C/man2/setns.2:139
+#: build/C/man7/sched.7:141
msgid ""
-"We begin by executing the example program in B<clone>(2) in the "
-"background. That program creates a child in a separate UTS namespace. The "
-"child changes the hostname in its namespace, and then both processes display "
-"the hostnames in their UTS namespaces, so that we can see that they are "
-"different."
+"B<SCHED_FIFO> can be used only with static priorities higher than 0, which "
+"means that when a B<SCHED_FIFO> threads becomes runnable, it will always "
+"immediately preempt any currently running B<SCHED_OTHER>, B<SCHED_BATCH>, or "
+"B<SCHED_IDLE> thread. B<SCHED_FIFO> is a simple scheduling algorithm "
+"without time slicing. For threads scheduled under the B<SCHED_FIFO> policy, "
+"the following rules apply:"
msgstr ""
-"まず、 B<clone>(2) のサンプルプログラムをバックグラウンドで実行する。 このプ"
-"ログラムは、 別の UTS 名前空間で子プロセスを作成する。 子プロセスは自分の名前"
-"空間内でホスト名を変更する。 それから、 親プロセスと子プロセスの両方でそれぞ"
-"れの UTS 名前空間のホスト名を表示し、 2 つのホスト名が違うことが確認できる。"
+"B<SCHED_FIFO> は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 "
+"B<SCHED_FIFO> スレッドが実行可能になった場合、 そのポリシーが "
+"B<SCHED_OTHER>、 B<SCHED_BATCH>、 B<SCHED_IDLE> の 現在実行中のスレッドは直ち"
+"に実行権を取り上げられる。 B<SCHED_FIFO> は時分割のない単純なスケジューリング"
+"アルゴリズムである。 B<SCHED_FIFO> ポリシーでスケジューリングされているスレッ"
+"ドには以下の ルールが適用される:"
+
+#. type: IP
+#: build/C/man7/sched.7:141 build/C/man7/sched.7:146 build/C/man7/sched.7:149
+#: build/C/man7/sched.7:164 build/C/man7/sched.7:413 build/C/man7/sched.7:422
+#: build/C/man7/sched.7:445 build/C/man7/sched.7:453 build/C/man7/sched.7:492
+#: build/C/man7/sched.7:500 build/C/man7/sched.7:505 build/C/man7/sched.7:510
+#, no-wrap
+msgid "*"
+msgstr "*"
#. type: Plain text
-#: build/C/man2/setns.2:151
+#: build/C/man7/sched.7:146
+msgid ""
+"A B<SCHED_FIFO> thread that has been preempted by another thread of higher "
+"priority will stay at the head of the list for its priority and will resume "
+"execution as soon as all threads of higher priority are blocked again."
+msgstr ""
+"より高い優先度の他のスレッドによって取って代わられた B<SCHED_FIFO> スレッドは"
+"その優先度のリストの先頭に留まり続け、 より高い優先度のスレッド全てが停止 "
+"(block) した場合に実行を再開する。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:149
+msgid ""
+"When a B<SCHED_FIFO> thread becomes runnable, it will be inserted at the end "
+"of the list for its priority."
+msgstr ""
+"B<SCHED_FIFO> スレッドが実行可能になった時、その優先度のリストの最後 に挿入さ"
+"れる。"
+
+#. In 2.2.x and 2.4.x, the thread is placed at the front of the queue
+#. In 2.0.x, the Right Thing happened: the thread went to the back -- MTK
+#. type: Plain text
+#: build/C/man7/sched.7:164
+#, fuzzy
+#| msgid ""
+#| "A call to B<sched_setscheduler>() or B<sched_setparam>(2) will put the "
+#| "B<SCHED_FIFO> (or B<SCHED_RR>) thread identified by I<pid> at the start "
+#| "of the list if it was runnable. As a consequence, it may preempt the "
+#| "currently running thread if it has the same priority. (POSIX.1-2001 "
+#| "specifies that the thread should go to the end of the list.)"
+msgid ""
+"A call to B<sched_setscheduler>(2), B<sched_setparam>(2), or "
+"B<sched_setattr>(2) will put the B<SCHED_FIFO> (or B<SCHED_RR>) thread "
+"identified by I<pid> at the start of the list if it was runnable. As a "
+"consequence, it may preempt the currently running thread if it has the same "
+"priority. (POSIX.1-2001 specifies that the thread should go to the end of "
+"the list.)"
+msgstr ""
+"B<sched_setscheduler>() や B<sched_setparam>(2) は I<pid> で指定された "
+"B<SCHED_FIFO> (または B<SCHED_RR>) スレッドが 実行可能な場合、リストの最初に"
+"置く。 結果として、もし優先度が同じだった場合、 現在実行中のスレッドに先んじ"
+"るかもしれない。 (POSIX.1-2001 ではスレッドはリストの最後に行くべきと規定され"
+"ている。)"
+
+#. type: Plain text
+#: build/C/man7/sched.7:168
+msgid "A thread calling B<sched_yield>(2) will be put at the end of the list."
+msgstr "B<sched_yield>(2) を呼び出したスレッドはリストの最後に置かれる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:172
+msgid ""
+"No other events will move a thread scheduled under the B<SCHED_FIFO> policy "
+"in the wait list of runnable threads with equal static priority."
+msgstr ""
+"その他のイベントによって B<SCHED_FIFO> ポリシーでスケジューリングされるスレッ"
+"ドが同じ優先度の実行可能なスレッドの待ちリストの中を移動することはない。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:177
+msgid ""
+"A B<SCHED_FIFO> thread runs until either it is blocked by an I/O request, it "
+"is preempted by a higher priority thread, or it calls B<sched_yield>(2)."
+msgstr ""
+"B<SCHED_FIFO> スレッドは I/O 要求によって停止するか、 より高い優先度のスレッ"
+"ドによって置きかえられるか、 B<sched_yield>(2) を呼び出すまで実行を続ける。"
+
+#. type: SS
+#: build/C/man7/sched.7:177
+#, no-wrap
+msgid "SCHED_RR: Round-robin scheduling"
+msgstr "SCHED_RR: ラウンドロビン (round-robin)スケジューリング"
+
+#. On Linux 2.4, the length of the RR interval is influenced
+#. by the process nice value -- MTK
+#. type: Plain text
+#: build/C/man7/sched.7:196
+msgid ""
+"B<SCHED_RR> is a simple enhancement of B<SCHED_FIFO>. Everything described "
+"above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except that each thread "
+"is allowed to run only for a maximum time quantum. If a B<SCHED_RR> thread "
+"has been running for a time period equal to or longer than the time quantum, "
+"it will be put at the end of the list for its priority. A B<SCHED_RR> "
+"thread that has been preempted by a higher priority thread and subsequently "
+"resumes execution as a running thread will complete the unexpired portion of "
+"its round-robin time quantum. The length of the time quantum can be "
+"retrieved using B<sched_rr_get_interval>(2)."
+msgstr ""
+"B<SCHED_RR> は B<SCHED_FIFO> の単純な拡張である。 上述された\n"
+"B<SCHED_FIFO> に関する記述は全て B<SCHED_RR> に 適用できる。異なるのは\n"
+"それぞれのスレッドは最大時間単位までしか実行できない ということである。\n"
+"B<SCHED_RR> スレッドが時間単位と同じかそれより 長い時間実行されると、\n"
+"その優先度のリストの最後に置かれる。 より高い優先度のスレッドによって\n"
+"置きかえられ、その後実行を再開した B<SCHED_RR> スレッドは、そのラウンド\n"
+"ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは\n"
+"B<sched_rr_get_interval>(2) を使って取得できる。"
+
+#. type: SS
+#: build/C/man7/sched.7:196
+#, no-wrap
+msgid "SCHED_DEADLINE: Sporadic task model deadline scheduling"
+msgstr ""
+
+#. type: Plain text
+#: build/C/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 ""
-"$ B<su> # Need privilege for namespace operations\n"
-"Password:\n"
-"# B<./newuts bizarro &>\n"
-"[1] 3549\n"
-"clone() returned 3550\n"
-"uts.nodename in child: bizarro\n"
-"uts.nodename in parent: antero\n"
-"# B<uname -n> # Verify hostname in the shell\n"
-"antero\n"
+"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 ""
-"$ B<su> # 名前空間の操作には特権が必要\n"
-"Password:\n"
-"# B<./newuts bizarro &>\n"
-"[1] 3549\n"
-"clone() returned 3550\n"
-"uts.nodename in child: bizarro\n"
-"uts.nodename in parent: antero\n"
-"# B<uname -n> # シェルでホスト名を確認\n"
-"antero\n"
#. type: Plain text
-#: build/C/man2/setns.2:158
+#: build/C/man7/sched.7:258
msgid ""
-"We then run the program shown below, using it to execute a shell. Inside "
-"that shell, we verify that the hostname is the one set by the child created "
-"by the first program:"
+"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/man2/setns.2:164
+#: build/C/man7/sched.7:269
#, no-wrap
msgid ""
-"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
-"# B<uname -n> # Executed in shell started by ns_exec\n"
-"bizarro\n"
+"arrival/wakeup absolute deadline\n"
+" | start time |\n"
+" | | |\n"
+" v v v\n"
+"-----x--------xooooooooooooooooo--------x--------x---\n"
+" |E<lt>-- Runtime -------E<gt>|\n"
+" |E<lt>----------- Deadline -----------E<gt>|\n"
+" |E<lt>-------------- Period -------------------E<gt>|\n"
msgstr ""
-"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
-"# B<uname -n> # ns_exec で起動されたシェル内で実行\n"
-"bizarro\n"
+#. FIXME It looks as though specifying sched_period as 0 means
+#. "make sched_period the same as sched_deadline", right?
+#. This needs to be documented.
#. type: Plain text
-#: build/C/man2/setns.2:174
-#, no-wrap
+#: build/C/man7/sched.7:289
msgid ""
-"#define _GNU_SOURCE\n"
-"#include E<lt>fcntl.hE<gt>\n"
-"#include E<lt>sched.hE<gt>\n"
-"#include E<lt>unistd.hE<gt>\n"
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
+"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 ""
-"#define _GNU_SOURCE\n"
-"#include E<lt>fcntl.hE<gt>\n"
-"#include E<lt>sched.hE<gt>\n"
-"#include E<lt>unistd.hE<gt>\n"
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
#. type: Plain text
-#: build/C/man2/setns.2:182
+#: 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 ""
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" int fd;\n"
+"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 ""
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" int fd;\n"
#. type: Plain text
-#: build/C/man2/setns.2:187
-#, no-wrap
+#: build/C/man7/sched.7:306
msgid ""
-" if (argc E<lt> 3) {\n"
-" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+"The CBS guarantees non-interference between tasks, by throttling threads "
+"that attempt to over-run their specified Runtime."
msgstr ""
-" if (argc E<lt> 3) {\n"
-" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
#. type: Plain text
-#: build/C/man2/setns.2:191
-#, no-wrap
+#: build/C/man7/sched.7:319
msgid ""
-" fd = open(argv[1], O_RDONLY); /* Get descriptor for namespace */\n"
-" if (fd == -1)\n"
-" errExit(\"open\");\n"
+"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 ""
-" fd = open(argv[1], O_RDONLY); /* 名前空間のディスクリプタを取得 */\n"
-" if (fd == -1)\n"
-" errExit(\"open\");\n"
#. type: Plain text
-#: build/C/man2/setns.2:194
-#, no-wrap
+#: build/C/man7/sched.7:325
msgid ""
-" if (setns(fd, 0) == -1) /* Join that namespace */\n"
-" errExit(\"setns\");\n"
+"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 ""
-" if (setns(fd, 0) == -1) /* 名前空間に参加 */\n"
-" errExit(\"setns\");\n"
#. type: Plain text
-#: build/C/man2/setns.2:198
-#, no-wrap
+#: build/C/man7/sched.7:336
msgid ""
-" execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
-" errExit(\"execvp\");\n"
-"}\n"
+"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 ""
-" execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */\n"
-" errExit(\"execvp\");\n"
-"}\n"
#. type: Plain text
-#: build/C/man2/setns.2:205
-msgid "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
-msgstr "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
+#: 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 ""
-#. type: TH
-#: build/C/man2/unshare.2:20
-#, no-wrap
-msgid "UNSHARE"
-msgstr "UNSHARE"
+#
+#. FIXME Calling sched_getparam() on a SCHED_DEADLINE thread
+#. fails with EINVAL, but sched_getscheduler() succeeds.
+#. Is that intended? (Why?)
+#. type: Plain text
+#: build/C/man7/sched.7:356
+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: TH
-#: build/C/man2/unshare.2:20
+#. type: SS
+#: build/C/man7/sched.7:356
+#, no-wrap
+msgid "SCHED_OTHER: Default Linux time-sharing scheduling"
+msgstr "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
+
+#. type: Plain text
+#: build/C/man7/sched.7:373
+#, fuzzy
+#| msgid ""
+#| "B<SCHED_OTHER> can be used at only static priority 0. B<SCHED_OTHER> is "
+#| "the standard Linux time-sharing scheduler that is intended for all "
+#| "threads that do not require the special real-time mechanisms. The thread "
+#| "to run is chosen from the static priority 0 list based on a I<dynamic> "
+#| "priority that is determined only inside this list. The dynamic priority "
+#| "is based on the nice value (set by B<nice>(2) or B<setpriority>(2)) and "
+#| "increased for each time quantum the thread is ready to run, but denied to "
+#| "run by the scheduler. This ensures fair progress among all "
+#| "B<SCHED_OTHER> threads."
+msgid ""
+"B<SCHED_OTHER> can be used at only static priority 0. B<SCHED_OTHER> is the "
+"standard Linux time-sharing scheduler that is intended for all threads that "
+"do not require the special real-time mechanisms. The thread to run is "
+"chosen from the static priority 0 list based on a I<dynamic> priority that "
+"is determined only inside this list. The dynamic priority is based on the "
+"nice value (set by B<nice>(2), B<setpriority>(2), or B<sched_setattr>(2)) "
+"and increased for each time quantum the thread is ready to run, but denied "
+"to run by the scheduler. This ensures fair progress among all "
+"B<SCHED_OTHER> threads."
+msgstr ""
+"B<SCHED_OTHER> は静的優先度 0 でのみ使用できる。 B<SCHED_OTHER> は Linux 標準"
+"の時分割スケジューラで、 特別なリアルタイム機構を必要としていない全てのスレッ"
+"ドで使用される。 実行するスレッドは、静的優先度 0 のリストから、このリストの"
+"中だけで 決定される「動的な」優先度 (dynamic priority) に基いて決定される。 "
+"動的な優先度は (B<nice>(2) や B<setpriority>(2) により設定される) nice 値に"
+"基づいて決定されるもので、 単位時間毎に、スレッドが実行可能だが、スケジューラ"
+"により実行が拒否された 場合にインクリメントされる。 これにより、全ての "
+"B<SCHED_OTHER> スレッドでの公平性が保証される。"
+
+#. type: SS
+#: build/C/man7/sched.7:373
#, no-wrap
-msgid "2013-04-17"
-msgstr "2013-04-17"
+msgid "SCHED_BATCH: Scheduling batch processes"
+msgstr "SCHED_BATCH: バッチプロセスのスケジューリング"
#. type: Plain text
-#: build/C/man2/unshare.2:23
-msgid "unshare - disassociate parts of the process execution context"
-msgstr "unshare - プロセス実行コンテキストの一部を分離する"
+#: build/C/man7/sched.7:385
+msgid ""
+"(Since Linux 2.6.16.) B<SCHED_BATCH> can be used only at static priority "
+"0. This policy is similar to B<SCHED_OTHER> in that it schedules the thread "
+"according to its dynamic priority (based on the nice value). The difference "
+"is that this policy will cause the scheduler to always assume that the "
+"thread is CPU-intensive. Consequently, the scheduler will apply a small "
+"scheduling penalty with respect to wakeup behaviour, so that this thread is "
+"mildly disfavored in scheduling decisions."
+msgstr ""
+"(Linux 2.6.16 以降) B<SCHED_BATCH> は静的優先度 0 でのみ使用できる。 このポ"
+"リシーは (nice 値に基づく) 動的な優先度にしたがってスレッドの スケジューリン"
+"グが行われるという点で、B<SCHED_OTHER> に似ている。 異なるのは、このポリシー"
+"では、スレッドが常に CPU に負荷のかかる (CPU-intensive) 処理を行うと、スケ"
+"ジューラが仮定する点である。 スケジューラはスレッドを呼び起こす毎にそのスレッ"
+"ドにスケジューリング上の ペナルティを少し課し、その結果、このスレッドはスケ"
+"ジューリングの決定で 若干冷遇されるようになる。"
+#. 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/unshare.2:28
+#: build/C/man7/sched.7:395
+msgid ""
+"This policy is useful for workloads that are noninteractive, but do not want "
+"to lower their nice value, and for workloads that want a deterministic "
+"scheduling policy without interactivity causing extra preemptions (between "
+"the workload's tasks)."
+msgstr ""
+"このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理の"
+"タスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで 確定的な "
+"(deterministic) スケジューリングポリシーを適用したい処理に 対して有効である。"
+
+#. type: SS
+#: build/C/man7/sched.7:395
#, no-wrap
-msgid "B<int unshare(int >I<flags>B<);>\n"
-msgstr "B<int unshare(int >I<flags>B<);>\n"
+msgid "SCHED_IDLE: Scheduling very low priority jobs"
+msgstr "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
#. type: Plain text
-#: build/C/man2/unshare.2:36
-msgid "B<unshare>():"
-msgstr "B<unshare>():"
+#: build/C/man7/sched.7:399
+msgid ""
+"(Since Linux 2.6.23.) B<SCHED_IDLE> can be used only at static priority 0; "
+"the process nice value has no influence for this policy."
+msgstr ""
+"(Linux 2.6.23 以降) B<SCHED_IDLE> は静的優先度 0 でのみ使用できる。 このポリ"
+"シーではプロセスの nice 値はスケジューリングに影響を与えない。"
#. type: Plain text
-#: build/C/man2/unshare.2:62
+#: build/C/man7/sched.7:407
msgid ""
-"B<unshare>() allows a process to disassociate parts of its execution "
-"context that are currently being shared with other processes. Part of the "
-"execution context, such as the mount namespace, is shared implicitly when a "
-"new process is created using B<fork>(2) or B<vfork>(2), while other parts, "
-"such as virtual memory, may be shared by explicit request when creating a "
-"process using B<clone>(2)."
+"This policy is intended for running jobs at extremely low priority (lower "
+"even than a +19 nice value with the B<SCHED_OTHER> or B<SCHED_BATCH> "
+"policies)."
msgstr ""
-"B<unshare>() を使うと、プロセスは他のプロセスと現在共有している 実行コンテキ"
-"ストの一部を分離することができる。 実行コンテキストの一部、たとえばマウント名"
-"前空間 (mount namespace) などは、新しいプロセスを B<fork>(2) または "
-"B<vfork>(2) を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモ"
-"リなどは、 B<clone>(2) を使ってプロセスを生成するときに、明示的に共有するこ"
-"とを要求できる。"
+"非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度と"
+"は、ポリシー B<SCHED_OTHER> か B<SCHED_BATCH> での nice 値 +19 よりさらに低い"
+"優先度である)。"
+
+#. type: SS
+#: build/C/man7/sched.7:407
+#, no-wrap
+msgid "Resetting scheduling policy for child processes"
+msgstr "子プロセスでのスケジューリングポリシーのリセット"
#. type: Plain text
-#: build/C/man2/unshare.2:67
+#: build/C/man7/sched.7:413
msgid ""
-"The main use of B<unshare>() is to allow a process to control its shared "
-"execution context without creating a new process."
+"Each thread has a reset-on-fork scheduling flag. When this flag is set, "
+"children created by B<fork>(2) do not inherit privileged scheduling "
+"policies. The reset-on-fork flag can be set by either:"
msgstr ""
-"B<unshare>() の主な利用法は、プロセスが新しいプロセスを生成することなく、 共"
-"有実行コンテキストを制御することである。"
#. type: Plain text
-#: build/C/man2/unshare.2:74
+#: build/C/man7/sched.7:422
+#, fuzzy
+#| msgid ""
+#| "The B<SCHED_RESET_ON_FORK> flag is visible in the policy value returned "
+#| "by B<sched_getscheduler>()"
msgid ""
-"The I<flags> argument is a bit mask that specifies which parts of the "
-"execution context should be unshared. This argument is specified by ORing "
-"together zero or more of the following constants:"
+"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 ""
-"I<flags> 引き数はビットマスクであり、 実行コンテキストのどの部分の共有を解除"
-"するかを表す。 この引き数は、以下の定数の 0 個以上の OR で指定する:"
+"B<SCHED_RESET_ON_FORK> フラグは、 B<sched_getscheduler>() が返すポリシー値で"
+"参照できる。"
-#. type: TP
-#: build/C/man2/unshare.2:74
-#, no-wrap
-msgid "B<CLONE_FILES>"
-msgstr "B<CLONE_FILES>"
+#. type: Plain text
+#: build/C/man7/sched.7:429
+msgid ""
+"specifying the B<SCHED_FLAG_RESET_ON_FORK> flag in I<attr.sched_flags> when "
+"calling B<sched_setattr>(2)."
+msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:82
+#: build/C/man7/sched.7:435
msgid ""
-"Reverse the effect of the B<clone>(2) B<CLONE_FILES> flag. Unshare the "
-"file descriptor table, so that the calling process no longer shares its file "
-"descriptors with any other process."
+"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 ""
-"B<clone>(2) B<CLONE_FILES> フラグの効果を取り消す。 ファイルディスクリプタ"
-"テーブルを共有させず、 呼び出し元プロセスは他のプロセスとファイルディスクリプ"
-"タを共有しなくなる。"
-#. type: TP
-#: build/C/man2/unshare.2:82
-#, no-wrap
-msgid "B<CLONE_FS>"
-msgstr "B<CLONE_FS>"
+#. type: Plain text
+#: build/C/man7/sched.7:442
+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/man2/unshare.2:96
+#: build/C/man7/sched.7:445
+#, fuzzy
+#| msgid ""
+#| "More precisely, if the B<SCHED_RESET_ON_FORK> flag is specified, the "
+#| "following rules apply for subsequently created children:"
msgid ""
-"Reverse the effect of the B<clone>(2) B<CLONE_FS> flag. Unshare filesystem "
-"attributes, so that the calling process no longer shares its root directory "
-"(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2)) "
-"attributes with any other process."
+"More precisely, if the reset-on-fork flag is set, the following rules apply "
+"for subsequently created children:"
msgstr ""
-"B<clone>(2) B<CLONE_FS> フラグの効果を取り消す。ファイルシステム属性を共有さ"
-"せず、呼び出し元プロセスは、ルートディレクトリ (B<chroot>(2))、カレントディレ"
-"クトリ (B<chdir>(2))、 umask (B<umask>(2)) を他のプロセスと共有しなくなる。"
+"より正確には、 B<SCHED_RESET_ON_FORK> フラグが指定された場合、それ以降に作成"
+"される子プロセスに以下のルールが適用される。"
#. type: Plain text
-#: build/C/man2/unshare.2:113
+#: build/C/man7/sched.7:453
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWIPC> flag. "
-"Unshare the System\\ V IPC namespace, so that the calling process has a "
-"private copy of the System\\ V IPC namespace which is not shared with any "
-"other process. Specifying this flag automatically implies B<CLONE_SYSVSEM> "
-"as well. Use of B<CLONE_NEWIPC> requires the B<CAP_SYS_ADMIN> capability."
+"If the calling thread has a scheduling policy of B<SCHED_FIFO> or "
+"B<SCHED_RR>, the policy is reset to B<SCHED_OTHER> in child processes."
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_NEWIPC> フラグと同じ効果を持つ。\n"
-"System\\ V IPC 名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは\n"
-"共有しない固有の System\\ V IPC 名前空間のコピーを持つ。 このフラグを指定\n"
-"すると、 B<CLONE_SYSVSEM> も暗黙のうちに指定される。 B<CLONE_NEWIPC> を\n"
-"使用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+"呼び出したスレッドのスケジューリングポリシーが B<SCHED_FIFO> か B<SCHED_RR> "
+"の場合、子プロセスのポリシーは B<SCHED_OTHER> にリセットされる。"
#. type: Plain text
-#: build/C/man2/unshare.2:128
+#: build/C/man7/sched.7:456
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
-"Unshare the network namespace, so that the calling process is moved into a "
-"new network namespace which is not shared with any previously existing "
-"process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
+"If the calling process has a negative nice value, the nice value is reset to "
+"zero in child processes."
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_NEWNET> フラグと同じ効果を持つ。ネット\n"
-"ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n"
-"い固有のネットワーク名前空間のコピーを持つ。B<CLONE_NEWNET> を使用する\n"
-"には B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+"子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセット"
+"される。"
-#. type: TP
-#: build/C/man2/unshare.2:128
+#. type: Plain text
+#: build/C/man7/sched.7:464
+#, fuzzy
+#| msgid ""
+#| "After the B<SCHED_RESET_ON_FORK> flag has been enabled, it can be reset "
+#| "only if the thread has the B<CAP_SYS_NICE> capability. This flag is "
+#| "disabled in child processes created by B<fork>(2)."
+msgid ""
+"After the reset-on-fork flag has been enabled, it can be reset only if the "
+"thread has the B<CAP_SYS_NICE> capability. This flag is disabled in child "
+"processes created by B<fork>(2)."
+msgstr ""
+"一度 B<SCHED_RESET_ON_FORK> フラグが有効にされた後は、このフラグをリセットで"
+"きるのは、スレッドが B<CAP_SYS_NICE> ケーパビリティを持つ場合だけである。この"
+"フラグは B<fork>(2) で作成された子プロセスでは無効になる。"
+
+#. type: SS
+#: build/C/man7/sched.7:464
#, no-wrap
-msgid "B<CLONE_NEWNS>"
-msgstr "B<CLONE_NEWNS>"
+msgid "Privileges and resource limits"
+msgstr "特権とリソース制限"
-#. These flag name are inconsistent:
-#. CLONE_NEWNS does the same thing in clone(), but CLONE_VM,
-#. CLONE_FS, and CLONE_FILES reverse the action of the clone()
-#. flags of the same name.
#. type: Plain text
-#: build/C/man2/unshare.2:149
+#: build/C/man7/sched.7:476
+#, fuzzy
+#| msgid ""
+#| "In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) "
+#| "threads can set a nonzero static priority (i.e., set a real-time "
+#| "scheduling policy). The only change that an unprivileged thread can make "
+#| "is to set the B<SCHED_OTHER> policy, and this can be done only if the "
+#| "effective user ID of the caller of B<sched_setscheduler>() matches the "
+#| "real or effective user ID of the target thread (i.e., the thread "
+#| "specified by I<pid>) whose policy is being changed."
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
-"Unshare the mount namespace, so that the calling process has a private copy "
-"of its namespace which is not shared with any other process. Specifying "
-"this flag automatically implies B<CLONE_FS> as well. Use of B<CLONE_NEWNS> "
-"requires the B<CAP_SYS_ADMIN> capability."
+"In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) threads "
+"can set a nonzero static priority (i.e., set a real-time scheduling "
+"policy). The only change that an unprivileged thread can make is to set the "
+"B<SCHED_OTHER> policy, and this can be done only if the effective user ID of "
+"the caller matches the real or effective user ID of the target thread (i.e., "
+"the thread specified by I<pid>) whose policy is being changed."
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_NEWNS> フラグと同じ効果を持つ。 マウン\n"
-"ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固\n"
-"有の名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_FS> も暗\n"
-"黙のうちに指定される。 B<CLONE_NEWNS> を使用するには B<CAP_SYS_ADMIN>\n"
-"ケーパビリティが必要である。"
+"2.6.12 より前のバージョンの Linux カーネルでは、 特権スレッド "
+"(B<CAP_SYS_NICE> ケーパビリティを持つスレッド) だけが 0 以外の静的優先度を設"
+"定する (すなわち、リアルタイムスケジューリングポリシーを設定する) ことができ"
+"る。 非特権スレッドができる変更は B<SCHED_OTHER> ポリシーを設定することだけで"
+"あり、さらにこの変更を行えるのは B<sched_setscheduler>() の呼び出し元の実効"
+"ユーザ ID がポリシーの変更対象スレッド (I<pid> で指定されたスレッド) の実ユー"
+"ザ ID か実効ユーザ ID と 一致する場合だけである。"
#. type: Plain text
-#: build/C/man2/unshare.2:163
+#: build/C/man7/sched.7:482
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWUTS> flag. "
-"Unshare the UTS IPC namespace, so that the calling process has a private "
-"copy of the UTS namespace which is not shared with any other process. Use "
-"of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
+"A thread must be privileged (B<CAP_SYS_NICE>) in order to set or modify a "
+"B<SCHED_DEADLINE> policy."
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_NEWUTS> フラグと同じ効果を持つ。 UTS\n"
-"IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない\n"
-"固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、\n"
-"B<CLONE_FS> も暗黙のうちに指定される。B<CLONE_NEWUTS> を使用するには\n"
-"B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
-
-#. type: TP
-#: build/C/man2/unshare.2:163
-#, no-wrap
-msgid "B<CLONE_SYSVSEM> (since Linux 2.6.26)"
-msgstr "B<CLONE_SYSVSEM> (Linux 2.6.26 以降)"
-#. commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7
-#. As at 2.6.16, the following forced implications also apply,
-#. although the relevant flags are not yet implemented.
-#. If CLONE_THREAD is set force CLONE_VM.
-#. If CLONE_VM is set, force CLONE_SIGHAND.
-#. CLONE_NEWNSIf CLONE_SIGHAND is set and signals are also being shared
-#. (i.e., current->signal->count > 1), force CLONE_THREAD.
-#. FIXME . CLONE_VM is not (yet, as at 2.6.16) implemented.
-#. .TP
-#. .B CLONE_VM
-#. Reverse the effect of the
-#. .BR clone (2)
-#. .B CLONE_VM
-#. flag.
-#. .RB ( CLONE_VM
-#. is also implicitly set by
-#. .BR vfork (2),
-#. and can be reversed using this
-#. .BR unshare ()
-#. flag.)
-#. Unshare virtual memory, so that the calling process no
-#. longer shares its virtual address space with any other process.
#. type: Plain text
-#: build/C/man2/unshare.2:200
+#: build/C/man7/sched.7:492
+msgid ""
+"Since Linux 2.6.12, the B<RLIMIT_RTPRIO> resource limit defines a ceiling on "
+"an unprivileged thread's static priority for the B<SCHED_RR> and "
+"B<SCHED_FIFO> policies. The rules for changing scheduling policy and "
+"priority are as follows:"
+msgstr ""
+"Linux 2.6.12 以降では、リソース制限 B<RLIMIT_RTPRIO> が定義されており、 スケ"
+"ジューリングポリシーが B<SCHED_RR> と B<SCHED_FIFO> の場合の、非特権スレッド"
+"の静的優先度の上限を定めている。 スケジューリングポリシーと優先度を変更する際"
+"のルールは以下の通りである。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:500
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."
+"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 ""
-"このフラグは B<clone>(2) B<CLONE_SYSVSEM> フラグの効果を逆転させる。\n"
-"System\\ V セマフォのアンドゥ値を共有せず、呼び出し元プロセスは 他のプロ\n"
-"ã\82»ã\82¹ã\81¨ã\81¯å\85±æ\9c\89ã\81\97ã\81ªã\81\84å\9bºæ\9c\89ã\81®ã\82³ã\83\94ã\83¼ã\82\92æ\8c\81ã\81¤ã\80\82B<CLONE_SYSVSEM> ã\82\92使ç\94¨ã\81\99ã\82\8bã\81«ã\81¯\n"
-"B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+"非特権スレッドに 0 以外の B<RLIMIT_RTPRIO> ソフトリミットが設定されている場"
+"合、 非特権スレッドはそのスレッドのスケジューリングポリシーと優先度を 変更で"
+"ã\81\8dã\82\8bã\81\8cã\80\81å\84ªå\85\88度ã\82\92ç\8f¾å\9c¨ã\81®è\87ªèº«ã\81®å\84ªå\85\88度ã\81¨ B<RLIMIT_RTPRIO> ã\82½ã\83\95ã\83\88ã\83ªã\83\9fã\83\83ã\83\88ã\81®å¤§ã\81\8dã\81\84"
+"方よりも高い値に設定できないという制限が課される。"
#. type: Plain text
-#: build/C/man2/unshare.2:207
+#: build/C/man7/sched.7:505
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."
+"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 ""
-"I<flags> に 0 が指定された場合、 B<unshare>() は何も行わないので、 呼び出し"
-"元プロセスの実行コンテキストは、何も変更されない。"
+"B<RLIMIT_RTPRIO> ソフトリミットが 0 の場合、優先度を下げるか、 リアルタイムで"
+"ないポリシーへ切り替えるかの変更だけが許可される。"
#. type: Plain text
-#: build/C/man2/unshare.2:212
+#: build/C/man7/sched.7:510
msgid ""
-"On success, zero returned. On failure, -1 is returned and I<errno> is set "
-"to indicate the error."
+"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 ""
-"成功した場合は 0 が返される。 失敗した場合は -1 が返されて、 I<errno> にはエ"
-"ラーを示す値が設定される。"
+"ある非特権スレッドが別のスレッドに対してこれらの変更を行う際にも、 同じルール"
+"が適用される。変更を行えるのは、変更を行おうとするスレッド の実効ユーザ ID が"
+"変更対象のスレッドの実ユーザ ID か実効ユーザ ID と 一致している場合に限られ"
+"る。"
+
+#. commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
+#. type: Plain text
+#: build/C/man7/sched.7:529
+#, fuzzy
+#| msgid ""
+#| "Special rules apply for the B<SCHED_IDLE>. In Linux kernels before "
+#| "2.6.39, an unprivileged thread operating under this policy cannot change "
+#| "its policy, regardless of the value of its B<RLIMIT_RTPRIO> resource "
+#| "limit. In Linux kernels since 2.6.39, an unprivileged thread can switch "
+#| "to either the B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its "
+#| "nice value falls within the range permitted by its B<RLIMIT_NICE> "
+#| "resource limit (see B<getrlimit>(2))."
+msgid ""
+"Special rules apply for the B<SCHED_IDLE> policy. In Linux kernels before "
+"2.6.39, an unprivileged thread operating under this policy cannot change its "
+"policy, regardless of the value of its B<RLIMIT_RTPRIO> resource limit. In "
+"Linux kernels since 2.6.39, an unprivileged thread can switch to either the "
+"B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its nice value falls "
+"within the range permitted by its B<RLIMIT_NICE> resource limit (see "
+"B<getrlimit>(2))."
+msgstr ""
+"B<SCHED_IDLE> の場合には特別なルールが適用される。 2.6.39 より前の Linux カー"
+"ネルでは、このポリシーで動作する非特権スレッドは、 B<RLIMIT_RTPRIO> リソース"
+"上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 以降の "
+"Linux カーネルでは、非特権スレッドは、自分の nice 値が B<RLIMIT_NICE> リソー"
+"ス上限 (B<getrlimit>(2) 参照) で許可された範囲である限りは、自分のスケジュー"
+"リングポリシーを B<SCHED_BATCH> か B<SCHED_NORMAL> ポリシーに切り替えることが"
+"できる。"
#. type: Plain text
-#: build/C/man2/unshare.2:217
-msgid "An invalid bit was specified in I<flags>."
-msgstr "I<flags> に不正なビットが指定された。"
+#: build/C/man7/sched.7:540
+msgid ""
+"Privileged (B<CAP_SYS_NICE>) threads ignore the B<RLIMIT_RTPRIO> limit; as "
+"with older kernels, they can make arbitrary changes to scheduling policy and "
+"priority. See B<getrlimit>(2) for further information on B<RLIMIT_RTPRIO>."
+msgstr ""
+"特権スレッド (B<CAP_SYS_NICE> ケーパビリティを持つスレッド) の場合、 "
+"B<RLIMIT_RTPRIO> の制限は無視される; 古いカーネルと同じように、スケジューリン"
+"グポリシーと優先度に対し 任意の変更を行うことができる。 B<RLIMIT_RTPRIO> に関"
+"するもっと詳しい情報は B<getrlimit>(2) を参照のこと。"
+
+#. type: SS
+#: build/C/man7/sched.7:540
+#, no-wrap
+msgid "Limiting the CPU usage of real-time and deadline processes"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:553
+#, fuzzy
+#| msgid ""
+#| "Since a nonblocking infinite loop in a thread scheduled under "
+#| "B<SCHED_FIFO> or B<SCHED_RR> will block all threads with lower priority "
+#| "forever, a software developer should always keep available on the console "
+#| "a shell scheduled under a higher static priority than the tested "
+#| "application. This will allow an emergency kill of tested real-time "
+#| "applications that do not block or terminate as expected. See also the "
+#| "description of the B<RLIMIT_RTTIME> resource limit in B<getrlimit>(2)."
+msgid ""
+"A nonblocking infinite loop in a thread scheduled under the B<SCHED_FIFO>, "
+"B<SCHED_RR>, or B<SCHED_DEADLINE> policy will block all threads with lower "
+"priority forever. Prior to Linux 2.6.25, the only way of preventing a "
+"runaway real-time process from freezing the system was to run (at the "
+"console) a shell scheduled under a higher static priority than the tested "
+"application. This allows an emergency kill of tested real-time applications "
+"that do not block or terminate as expected."
+msgstr ""
+"B<SCHED_FIFO> や B<SCHED_RR> でスケジューリングされる スレッドが停止せずに無"
+"限ループに陥ると、 他の全てのより低い優先度のスレッドを永久に停止 (block) さ"
+"せてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優先度をテストす"
+"る アプリケーションよりも常に高く保つべきである。 これによって期待通りに停止"
+"したり終了したりしないリアルタイム アプリケーションを緊急終了させることが可能"
+"になる。 B<getrlimit>(2) のリソース制限 B<RLIMIT_RTTIME> の説明も参照のこ"
+"と。"
#. type: Plain text
-#: build/C/man2/unshare.2:221
+#: build/C/man7/sched.7:563
msgid ""
-"Cannot allocate sufficient memory to copy parts of caller's context that "
-"need to be unshared."
+"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/unshare.2:224
+#: build/C/man7/sched.7:571
msgid ""
-"The calling process did not have the required privileges for this operation."
-msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。"
+"Since version 2.6.25, Linux also provides two I</proc> files that can be "
+"used to reserve a certain amount of CPU time to be used by non-real-time "
+"processes. Reserving some CPU time in this fashion allows some CPU time to "
+"be allocated to (say) a root shell that can be used to kill a runaway "
+"process. Both of these files specify time values in microseconds:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:571
+#, no-wrap
+msgid "I</proc/sys/kernel/sched_rt_period_us>"
+msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:228
-msgid "The B<unshare>() system call was added to Linux in kernel 2.6.16."
-msgstr "B<unshare>() システムコールは Linux カーネル 2.6.16 で追加された。"
+#: build/C/man7/sched.7:579
+msgid ""
+"This file specifies a scheduling period that is equivalent to 100% CPU "
+"bandwidth. The value in this file can range from 1 to B<INT_MAX>, giving an "
+"operating range of 1 microsecond to around 35 minutes. The default value in "
+"this file is 1,000,000 (1 second)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:579
+#, no-wrap
+msgid "I</proc/sys/kernel/sched_rt_runtime_us>"
+msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:232
-msgid "The B<unshare>() system call is Linux-specific."
-msgstr "B<unshare>() システムコールは Linux 固有である。"
+#: build/C/man7/sched.7:592
+msgid ""
+"The value in this file specifies how much of the \"period\" time can be used "
+"by all real-time and deadline scheduled processes on the system. The value "
+"in this file can range from -1 to B<INT_MAX>-1. Specifying -1 makes the "
+"runtime the same as the period; that is, no CPU time is set aside for non-"
+"real-time processes (which was the Linux behavior before kernel 2.6.25). "
+"The default value in this file is 950,000 (0.95 seconds), meaning that 5% of "
+"the CPU time is reserved for processes that don't run under a real-time or "
+"deadline scheduling policy."
+msgstr ""
-#. FIXME all of the following needs to be reviewed for the current kernel
-#. However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND
-#. was not specified when doing clone(); i.e., unsharing
-#. signal handlers is permitted if we are not actually
-#. sharing signal handlers. mtk
-#. However, we can do unshare(CLONE_VM) if CLONE_VM
-#. was not specified when doing clone(); i.e., unsharing
-#. virtual memory is permitted if we are not actually
-#. sharing virtual memory. mtk
-#. 9) Future Work
-#. --------------
-#. The current implementation of unshare does not allow unsharing of
-#. signals and signal handlers. Signals are complex to begin with and
-#. to unshare signals and/or signal handlers of a currently running
-#. process is even more complex. If in the future there is a specific
-#. need to allow unsharing of signals and/or signal handlers, it can
-#. be incrementally added to unshare without affecting legacy
-#. applications using unshare.
+#. type: SS
+#: build/C/man7/sched.7:593
+#, no-wrap
+msgid "Response time"
+msgstr "応答時間 (response time)"
+
+#. as described in
+#. .BR request_irq (9).
#. type: Plain text
-#: build/C/man2/unshare.2:266
+#: build/C/man7/sched.7:601
+#, fuzzy
+#| msgid ""
+#| "A blocked high priority thread waiting for the I/O has a certain response "
+#| "time before it is scheduled again. The device driver writer can greatly "
+#| "reduce this response time by using a \"slow interrupt\" interrupt handler."
msgid ""
-"Not all of the process attributes that can be shared when a new process is "
-"created using B<clone>(2) can be unshared using B<unshare>(). In "
-"particular, as at kernel 3.8, B<unshare>() does not implement flags that "
-"reverse the effects of B<CLONE_SIGHAND>, B<CLONE_THREAD>, or B<CLONE_VM>. "
-"Such functionality may be added in the future, if required."
+"A 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 ""
-"B<clone>(2) で新しいプロセスを生成したときに共有される全てのプロセス属性"
-"を、 B<unshare>() によって共有の解除ができるわけではない。 特に、カーネル "
-"3.8 時点では、 B<unshare>() に B<CLONE_SIGHAND>, B<CLONE_THREAD>, "
-"B<CLONE_VM> の効果を取り消すためのフラグが実装されていない。 これらの機能は、"
-"必要であれば将来追加されるかもしれない。"
+"I/O 待ちで停止したより高い優先度のスレッドは再びスケジューリングされる 前にい"
+"くらかの応答時間がかかる。デバイスドライバーを書く場合には \"slow interrupt"
+"\" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることがで"
+"きる。"
+
+#. type: SS
+#: build/C/man7/sched.7:601
+#, no-wrap
+msgid "Miscellaneous"
+msgstr "その他"
#. type: Plain text
-#: build/C/man2/unshare.2:272
-msgid "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
-msgstr "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
+#: build/C/man7/sched.7:606
+msgid ""
+"Child processes inherit the scheduling policy and parameters across a "
+"B<fork>(2). The scheduling policy and parameters are preserved across "
+"B<execve>(2)."
+msgstr ""
+"子プロセスは B<fork>(2) の際に親プロセスのスケジューリングポリシーとパラメー"
+"タを継承する。 B<execve>(2) の前後で、スケジューリングポリシーとパラメータは"
+"保持される。"
#. type: Plain text
-#: build/C/man2/unshare.2:275
-msgid "I<Documentation/unshare.txt> in the Linux kernel source tree"
-msgstr "Linux カーネルソース内の I<Documentation/unshare.txt>"
+#: build/C/man7/sched.7:612
+msgid ""
+"Memory locking is usually needed for real-time processes to avoid paging "
+"delays; this can be done with B<mlock>(2) or B<mlockall>(2)."
+msgstr ""
+"リアルタイムプロセスは大抵、ページングの待ち時間を避けるために B<mlock>(2) "
+"や B<mlockall>(2) を使ってメモリロックをしなければならない。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:623
+msgid ""
+"Originally, Standard Linux was intended as a general-purpose operating "
+"system being able to handle background processes, interactive applications, "
+"and less demanding real-time applications (applications that need to usually "
+"meet timing deadlines). Although the Linux kernel 2.6 allowed for kernel "
+"preemption and the newly introduced O(1) scheduler ensures that the time "
+"needed to schedule is fixed and deterministic irrespective of the number of "
+"active tasks, true real-time computing was not possible up to kernel version "
+"2.6.17."
+msgstr ""
+"もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計され"
+"ており、バックグラウンドプロセスや対話的アプリケーション、 リアルタイム性の要"
+"求が厳しくないリアルタイムアプリケーション (普通はタイミングの応答期限 "
+"(deadline) を満たす必要があるアプリケーション) を扱うことができた。 Linux "
+"カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であ"
+"り、 新たに導入された O(1) スケジューラにより、 アクティブなタスクの数に関わ"
+"らずスケジューリングに必要な時間は 固定で確定的 (deterministic) であることが"
+"保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイムコ"
+"ンピューティングは実現できなかった。"
+
+#. type: SS
+#: build/C/man7/sched.7:623
+#, no-wrap
+msgid "Real-time features in the mainline Linux kernel"
+msgstr "本流の Linux カーネルでのリアルタイム機能"
+
+#. FIXME . Probably this text will need some minor tweaking
+#. by about the time of 2.6.30; ask Carsten Emde about this then.
+#. type: Plain text
+#: build/C/man7/sched.7:637
+msgid ""
+"From kernel version 2.6.18 onward, however, Linux is gradually becoming "
+"equipped with real-time capabilities, most of which are derived from the "
+"former I<realtime-preempt> patches developed by Ingo Molnar, Thomas "
+"Gleixner, Steven Rostedt, and others. Until the patches have been "
+"completely merged into the mainline kernel (this is expected to be around "
+"kernel version 2.6.30), they must be installed to achieve the best real-time "
+"performance. These patches are named:"
+msgstr ""
+"カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ\n"
+"あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,\n"
+"Steven Rostedt らによって開発された、 以前の I<realtime-preempt> パッチ\n"
+"からのものである。 これらのパッチが本流のカーネルに完全にマージされるま\n"
+"では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム\n"
+"性能を達成するには realtime-preempt パッチを 組み込まなければならない。\n"
+"これらのパッチは"
+
+#. type: Plain text
+#: build/C/man7/sched.7:641
+#, no-wrap
+msgid "patch-I<kernelversion>-rtI<patchversion>\n"
+msgstr "patch-I<kernelversion>-rtI<patchversion>\n"
+
+#. type: Plain text
+#: build/C/man7/sched.7:647
+msgid ""
+"and can be downloaded from E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/"
+"kernel\\:/projects\\:/rt/> E<.UE .>"
+msgstr ""
+"という名前で、 E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/"
+"projects\\:/rt/> E<.UE> からダウンロードできる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:656
+msgid ""
+"Without the patches and prior to their full inclusion into the mainline "
+"kernel, the kernel configuration offers only the three preemption classes "
+"B<CONFIG_PREEMPT_NONE>, B<CONFIG_PREEMPT_VOLUNTARY>, and "
+"B<CONFIG_PREEMPT_DESKTOP> which respectively provide no, some, and "
+"considerable reduction of the worst-case scheduling latency."
+msgstr ""
+"このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了する"
+"までは、カーネルの設定では B<CONFIG_PREEMPT_NONE>, "
+"B<CONFIG_PREEMPT_VOLUNTARY>, B<CONFIG_PREEMPT_DESKTOP> の 3つのプリエンプショ"
+"ンクラス (preemption class) だけが提供される。 これらのクラスでは、最悪の場合"
+"のスケジューリング遅延がそれぞれ 全く減らない、いくらか減る、かなり減る。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:665
+#, fuzzy
+#| msgid ""
+#| "With the patches applied or after their full inclusion into the mainline "
+#| "kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
+#| "available. If this is selected, Linux is transformed into a regular real-"
+#| "time operating system. The FIFO and RR scheduling policies that can be "
+#| "selected using B<sched_setscheduler>() are then used to run a thread "
+#| "with true real-time priority and a minimum worst-case scheduling latency."
+msgid ""
+"With the patches applied or after their full inclusion into the mainline "
+"kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
+"available. If this is selected, Linux is transformed into a regular real-"
+"time operating system. The FIFO and RR scheduling policies are then used to "
+"run a thread with true real-time priority and a minimum worst-case "
+"scheduling latency."
+msgstr ""
+"パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完了し"
+"た後では、上記に加えて設定項目として B<CONFIG_PREEMPT_RT> が利用可能になる。"
+"この項目を選択すると、 Linux は通常のリアルタイムオペレーティングシステムに変"
+"身する。 この場合には、 B<sched_setscheduler>() で選択できる FIFO と RR のス"
+"ケジューリングポリシーは、 真のリアルタイム優先度を持つスレッドを最悪の場合の"
+"スケジューリング遅延が 最小となる環境で動作させるために使われることになる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:691
+#, fuzzy
+#| msgid ""
+#| "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+#| "B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+#| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
+#| "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
+#| "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+msgid ""
+"B<chrt>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), B<munlock>(2), "
+"B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
+"B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
+"B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
+"B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
+"B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
+"B<cpuset>(7)"
+msgstr ""
+"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
+"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
+"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+
+#. type: Plain text
+#: build/C/man7/sched.7:695
+msgid ""
+"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
+"& Associates, Inc., ISBN 1-56592-074-0."
+msgstr ""
+"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
+"& Associates, Inc., ISBN 1-56592-074-0."
+
+#. type: Plain text
+#: build/C/man7/sched.7:702
+msgid ""
+"The Linux kernel source files I<Documentation/scheduler/sched-deadline.txt>, "
+"I<Documentation/scheduler/sched-rt-group.txt>, I<Documentation/scheduler/"
+"sched-design-CFS.txt>, and I<Documentation/scheduler/sched-nice-design.txt>"
+msgstr ""
#~ msgid "2013-09-23"
#~ msgstr "2013-09-23"
-#~ msgid ""
-#~ "I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, "
-#~ "O'Reilly & Associates, Inc., ISBN 1-56592-074-0."
-#~ msgstr ""
-#~ "I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, "
-#~ "O'Reilly & Associates, Inc., ISBN 1-56592-074-0."
-
#~ msgid "B<getcpu>(2)"
#~ msgstr "B<getcpu>(2)"
#~ "\" (i.e., non-real-time) scheduling policies:"
#~ msgstr ""
#~ "B<sched_setscheduler>() は I<pid> で指定された ID を持つスレッドのスケ"
-#~ "ジューリングポリシーや それに関連するパラメータを設定する。I<pid> が 0 "
-#~ "の場合は 呼び出したスレッドのスケジューリングポリシーとパラメータが設定"
-#~ "ã\81\95ã\82\8cã\82\8bã\80\82 å¼\95ã\81\8dæ\95° I<param> ã\81®è§£é\87\88ã\81¯é\81¸æ\8a\9eã\81\95ã\82\8cã\81\9fã\83\9dã\83ªã\82·ã\83¼ã\81«ã\82\88ã\82\8bã\80\82 ç\8f¾å\9c¨ã\81®ã\81¨ã\81\93ã\82\8dã\80\81"
-#~ "Linux では 以下に示す「通常」(リアルタイムでない) スケジューリングポリ"
-#~ "ã\82·ã\83¼ã\81\8c ã\82µã\83\9dã\83¼ã\83\88ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\80\82"
+#~ "ジューリングポリシーや それに関連するパラメータを設定する。I<pid> が 0 の"
+#~ "場合は 呼び出したスレッドのスケジューリングポリシーとパラメータが設定され"
+#~ "る。 引き数 I<param> の解釈は選択されたポリシーによる。 現在のところ、"
+#~ "Linux では 以下に示す「通常」(リアルタイムでない) スケジューリングポリシー"
+#~ "が サポートされている。"
#~ msgid "The semantics of each of these policies are detailed below."
#~ msgstr "これらのポリシーのそれぞれの動作については以下で説明する。"
-#~ msgid "Scheduling policies"
-#~ msgstr "スケジューリングポリシー (scheduling policy)"
-
-#~ msgid ""
-#~ "The scheduler is the kernel component that decides which runnable thread "
-#~ "will be executed by the CPU next. Each thread has an associated "
-#~ "scheduling policy and a I<static> scheduling priority, I<sched_priority>; "
-#~ "these are the settings that are modified by B<sched_setscheduler>(). The "
-#~ "scheduler makes it decisions based on knowledge of the scheduling policy "
-#~ "and static priority of all threads on the system."
-#~ msgstr ""
-#~ "スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される"
-#~ "実行可能なスレッドを決定するものである。 各々のスレッドには、スケジューリ"
-#~ "ングポリシーと 「静的」なスケジューリング優先度 I<sched_priority> が対応"
-#~ "付けられ、 これらの設定は B<sched_setscheduler>() で変更できる。 スケ"
-#~ "ジューラは、システム上の全スレッドのスケジューリングポリシーと 静的優先"
-#~ "度に関する知識に基づいて決定を行う。"
-
-#~ msgid ""
-#~ "For threads scheduled under one of the normal scheduling policies "
-#~ "(B<SCHED_OTHER>, B<SCHED_IDLE>, B<SCHED_BATCH>), I<sched_priority> is not "
-#~ "used in scheduling decisions (it must be specified as 0)."
-#~ msgstr ""
-#~ "通常のスケジューリングポリシー (B<SCHED_OTHER>, B<SCHED_IDLE>, "
-#~ "B<SCHED_BATCH>) の下でスケジューリングされるスレッドでは、 "
-#~ "I<sched_priority> はスケジューリングの決定に使用されない "
-#~ "(I<sched_priority> には 0 を指定しなければならない)。"
-
-#~ msgid ""
-#~ "Processes scheduled under one of the real-time policies (B<SCHED_FIFO>, "
-#~ "B<SCHED_RR>) have a I<sched_priority> value in the range 1 (low) to 99 "
-#~ "(high). (As the numbers imply, real-time threads always have higher "
-#~ "priority than normal threads.) Note well: POSIX.1-2001 requires an "
-#~ "implementation to support only a minimum 32 distinct priority levels for "
-#~ "the real-time policies, and some systems supply just this minimum. "
-#~ "Portable programs should use B<sched_get_priority_min>(2) and "
-#~ "B<sched_get_priority_max>(2) to find the range of priorities supported "
-#~ "for a particular policy."
-#~ msgstr ""
-#~ "リアルタイムスケジューリングポリシー (B<SCHED_FIFO>, B<SCHED_RR>) の"
-#~ "下でスケジューリングされるスレッドは、 I<sched_priority> の値は 1 (最低) "
-#~ "から 99 (最高) の範囲となる (数字から分かるように、リアルタイムスレッド"
-#~ "は常に通常のスレッドよりも 高い優先度を持つ)。 ここで注意すべきなのは、"
-#~ "POSIX.1-2001 が要求しているのは、 リアルタイムポリシーの実装において最"
-#~ "低 32 種類の異なる優先度レベルが サポートされることだけであり、いくつかの"
-#~ "システムではこの最低限の数の 優先度しか提供されていない、ということであ"
-#~ "る。 移植性が必要なプログラムでは、 B<sched_get_priority_min>(2) と "
-#~ "B<sched_get_priority_max>(2) を使って、あるポリシーがサポートする優先度の"
-#~ "範囲を調べるべきである。"
-
-#~ msgid ""
-#~ "Conceptually, the scheduler maintains a list of runnable threads for each "
-#~ "possible I<sched_priority> value. In order to determine which thread "
-#~ "runs next, the scheduler looks for the nonempty list with the highest "
-#~ "static priority and selects the thread at the head of this list."
-#~ msgstr ""
-#~ "概念としては、 スケジューラはその I<sched_priority> の値それぞれに対して "
-#~ "実行可能なスレッドのリストを管理している。 どのスレッドを次に実行するかを"
-#~ "決定するために、 スケジューラは静的優先度の最も高い空でないリストを探し"
-#~ "て、 そのリストの先頭のスレッドを選択する。"
-
-#~ msgid ""
-#~ "A thread's scheduling policy determines where it will be inserted into "
-#~ "the list of threads with equal static priority and how it will move "
-#~ "inside this list."
-#~ msgstr ""
-#~ "各スレッドのスケジューリングポリシーは、 そのスレッドが同じ静的優先度を"
-#~ "持つスレッドのリストの中のどこに挿入され、 このリストの中をどのように移動"
-#~ "するかを決定する。"
-
-#~ msgid ""
-#~ "All scheduling is preemptive: if a thread with a higher static priority "
-#~ "becomes ready to run, the currently running thread will be preempted and "
-#~ "returned to the wait list for its static priority level. The scheduling "
-#~ "policy determines the ordering only within the list of runnable threads "
-#~ "with equal static priority."
-#~ msgstr ""
-#~ "全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先"
-#~ "度のスレッドが実行可能になると、現在実行中のスレッドは実行権を 取り上げら"
-#~ "れ (preempted)、そのスレッドの静的優先度レベルの待ちリストに 戻される。ス"
-#~ "ケジューリングポリシーは同じ静的優先度を持つ実行可能な スレッドのリスト"
-#~ "の中で順番のみを決定する。"
-
-#~ msgid "SCHED_FIFO: First in-first out scheduling"
-#~ msgstr "SCHED_FIFO: ファーストインファーストアウトスケジューリング"
-
-#~ msgid ""
-#~ "B<SCHED_FIFO> can be used only with static priorities higher than 0, "
-#~ "which means that when a B<SCHED_FIFO> threads becomes runnable, it will "
-#~ "always immediately preempt any currently running B<SCHED_OTHER>, "
-#~ "B<SCHED_BATCH>, or B<SCHED_IDLE> thread. B<SCHED_FIFO> is a simple "
-#~ "scheduling algorithm without time slicing. For threads scheduled under "
-#~ "the B<SCHED_FIFO> policy, the following rules apply:"
-#~ msgstr ""
-#~ "B<SCHED_FIFO> は 0 より大きな静的優先度でのみ使用できる。このポリシーで"
-#~ "は、 B<SCHED_FIFO> スレッドが実行可能になった場合、 そのポリシーが "
-#~ "B<SCHED_OTHER>、 B<SCHED_BATCH>、 B<SCHED_IDLE> の 現在実行中のスレッドは"
-#~ "直ちに実行権を取り上げられる。 B<SCHED_FIFO> は時分割のない単純なスケ"
-#~ "ジューリングアルゴリズムである。 B<SCHED_FIFO> ポリシーでスケジューリン"
-#~ "グされているスレッドには以下の ルールが適用される:"
-
-#~ msgid "*"
-#~ msgstr "*"
-
-#~ msgid ""
-#~ "A B<SCHED_FIFO> thread that has been preempted by another thread of "
-#~ "higher priority will stay at the head of the list for its priority and "
-#~ "will resume execution as soon as all threads of higher priority are "
-#~ "blocked again."
-#~ msgstr ""
-#~ "より高い優先度の他のスレッドによって取って代わられた B<SCHED_FIFO> スレッ"
-#~ "ドはその優先度のリストの先頭に留まり続け、 より高い優先度のスレッド全てが"
-#~ "停止 (block) した場合に実行を再開する。"
-
-#~ msgid ""
-#~ "When a B<SCHED_FIFO> thread becomes runnable, it will be inserted at the "
-#~ "end of the list for its priority."
-#~ msgstr ""
-#~ "B<SCHED_FIFO> スレッドが実行可能になった時、その優先度のリストの最後 に挿"
-#~ "入される。"
-
-#~ msgid ""
-#~ "A call to B<sched_setscheduler>() or B<sched_setparam>(2) will put the "
-#~ "B<SCHED_FIFO> (or B<SCHED_RR>) thread identified by I<pid> at the start "
-#~ "of the list if it was runnable. As a consequence, it may preempt the "
-#~ "currently running thread if it has the same priority. (POSIX.1-2001 "
-#~ "specifies that the thread should go to the end of the list.)"
-#~ msgstr ""
-#~ "B<sched_setscheduler>() や B<sched_setparam>(2) は I<pid> で指定された "
-#~ "B<SCHED_FIFO> (または B<SCHED_RR>) スレッドが 実行可能な場合、リストの最初"
-#~ "に置く。 結果として、もし優先度が同じだった場合、 現在実行中のスレッドに先"
-#~ "んじるかもしれない。 (POSIX.1-2001 ではスレッドはリストの最後に行くべきと"
-#~ "規定されている。)"
-
-#~ msgid ""
-#~ "A thread calling B<sched_yield>(2) will be put at the end of the list."
-#~ msgstr "B<sched_yield>(2) を呼び出したスレッドはリストの最後に置かれる。"
-
-#~ msgid ""
-#~ "No other events will move a thread scheduled under the B<SCHED_FIFO> "
-#~ "policy in the wait list of runnable threads with equal static priority."
-#~ msgstr ""
-#~ "その他のイベントによって B<SCHED_FIFO> ポリシーでスケジューリングされるス"
-#~ "レッドが同じ優先度の実行可能なスレッドの待ちリストの中を移動することはな"
-#~ "い。"
-
-#~ msgid ""
-#~ "A B<SCHED_FIFO> thread runs until either it is blocked by an I/O request, "
-#~ "it is preempted by a higher priority thread, or it calls "
-#~ "B<sched_yield>(2)."
-#~ msgstr ""
-#~ "B<SCHED_FIFO> スレッドは I/O 要求によって停止するか、 より高い優先度のス"
-#~ "レッドによって置きかえられるか、 B<sched_yield>(2) を呼び出すまで実行を続"
-#~ "ける。"
-
-#~ msgid "SCHED_RR: Round-robin scheduling"
-#~ msgstr "SCHED_RR: ラウンドロビン (round-robin)スケジューリング"
-
-#~ msgid ""
-#~ "B<SCHED_RR> is a simple enhancement of B<SCHED_FIFO>. Everything "
-#~ "described above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except "
-#~ "that each thread is allowed to run only for a maximum time quantum. If a "
-#~ "B<SCHED_RR> thread has been running for a time period equal to or longer "
-#~ "than the time quantum, it will be put at the end of the list for its "
-#~ "priority. A B<SCHED_RR> thread that has been preempted by a higher "
-#~ "priority thread and subsequently resumes execution as a running thread "
-#~ "will complete the unexpired portion of its round-robin time quantum. The "
-#~ "length of the time quantum can be retrieved using "
-#~ "B<sched_rr_get_interval>(2)."
-#~ msgstr ""
-#~ "B<SCHED_RR> は B<SCHED_FIFO> の単純な拡張である。 上述された\n"
-#~ "B<SCHED_FIFO> に関する記述は全て B<SCHED_RR> に 適用できる。異なるのは\n"
-#~ "それぞれのスレッドは最大時間単位までしか実行できない ということである。\n"
-#~ "B<SCHED_RR> スレッドが時間単位と同じかそれより 長い時間実行されると、\n"
-#~ "その優先度のリストの最後に置かれる。 より高い優先度のスレッドによって\n"
-#~ "置きかえられ、その後実行を再開した B<SCHED_RR> スレッドは、そのラウンド\n"
-#~ "ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは\n"
-#~ "B<sched_rr_get_interval>(2) を使って取得できる。"
-
-#~ msgid "SCHED_OTHER: Default Linux time-sharing scheduling"
-#~ msgstr "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
-
-#~ msgid ""
-#~ "B<SCHED_OTHER> can be used at only static priority 0. B<SCHED_OTHER> is "
-#~ "the standard Linux time-sharing scheduler that is intended for all "
-#~ "threads that do not require the special real-time mechanisms. The thread "
-#~ "to run is chosen from the static priority 0 list based on a I<dynamic> "
-#~ "priority that is determined only inside this list. The dynamic priority "
-#~ "is based on the nice value (set by B<nice>(2) or B<setpriority>(2)) and "
-#~ "increased for each time quantum the thread is ready to run, but denied to "
-#~ "run by the scheduler. This ensures fair progress among all "
-#~ "B<SCHED_OTHER> threads."
-#~ msgstr ""
-#~ "B<SCHED_OTHER> は静的優先度 0 でのみ使用できる。 B<SCHED_OTHER> は Linux "
-#~ "標準の時分割スケジューラで、 特別なリアルタイム機構を必要としていない全て"
-#~ "のスレッドで使用される。 実行するスレッドは、静的優先度 0 のリストから、こ"
-#~ "のリストの中だけで 決定される「動的な」優先度 (dynamic priority) に基いて"
-#~ "決定される。 動的な優先度は (B<nice>(2) や B<setpriority>(2) により設定"
-#~ "される) nice 値に基づいて決定されるもので、 単位時間毎に、スレッドが実行可"
-#~ "能だが、スケジューラにより実行が拒否された 場合にインクリメントされる。 こ"
-#~ "れにより、全ての B<SCHED_OTHER> スレッドでの公平性が保証される。"
-
-#~ msgid "SCHED_BATCH: Scheduling batch processes"
-#~ msgstr "SCHED_BATCH: バッチプロセスのスケジューリング"
-
-#~ msgid ""
-#~ "(Since Linux 2.6.16.) B<SCHED_BATCH> can be used only at static priority "
-#~ "0. This policy is similar to B<SCHED_OTHER> in that it schedules the "
-#~ "thread according to its dynamic priority (based on the nice value). The "
-#~ "difference is that this policy will cause the scheduler to always assume "
-#~ "that the thread is CPU-intensive. Consequently, the scheduler will apply "
-#~ "a small scheduling penalty with respect to wakeup behaviour, so that this "
-#~ "thread is mildly disfavored in scheduling decisions."
-#~ msgstr ""
-#~ "(Linux 2.6.16 以降) B<SCHED_BATCH> は静的優先度 0 でのみ使用できる。 この"
-#~ "ポリシーは (nice 値に基づく) 動的な優先度にしたがってスレッドの スケジュー"
-#~ "リングが行われるという点で、B<SCHED_OTHER> に似ている。 異なるのは、このポ"
-#~ "リシーでは、スレッドが常に CPU に負荷のかかる (CPU-intensive) 処理を行う"
-#~ "と、スケジューラが仮定する点である。 スケジューラはスレッドを呼び起こす毎"
-#~ "にそのスレッドにスケジューリング上の ペナルティを少し課し、その結果、この"
-#~ "スレッドはスケジューリングの決定で 若干冷遇されるようになる。"
-
-#~ msgid ""
-#~ "This policy is useful for workloads that are noninteractive, but do not "
-#~ "want to lower their nice value, and for workloads that want a "
-#~ "deterministic scheduling policy without interactivity causing extra "
-#~ "preemptions (between the workload's tasks)."
-#~ msgstr ""
-#~ "このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理"
-#~ "のタスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで 確定的"
-#~ "な (deterministic) スケジューリングポリシーを適用したい処理に 対して有効"
-#~ "である。"
-
-#~ msgid "SCHED_IDLE: Scheduling very low priority jobs"
-#~ msgstr "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
-
-#~ msgid ""
-#~ "(Since Linux 2.6.23.) B<SCHED_IDLE> can be used only at static priority "
-#~ "0; the process nice value has no influence for this policy."
-#~ msgstr ""
-#~ "(Linux 2.6.23 以降) B<SCHED_IDLE> は静的優先度 0 でのみ使用できる。 この"
-#~ "ポリシーではプロセスの nice 値はスケジューリングに影響を与えない。"
-
-#~ msgid ""
-#~ "This policy is intended for running jobs at extremely low priority (lower "
-#~ "even than a +19 nice value with the B<SCHED_OTHER> or B<SCHED_BATCH> "
-#~ "policies)."
-#~ msgstr ""
-#~ "非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度と"
-#~ "は、ポリシー B<SCHED_OTHER> か B<SCHED_BATCH> での nice 値 +19 よりさらに"
-#~ "低い優先度である)。"
-
-#~ msgid "Resetting scheduling policy for child processes"
-#~ msgstr "子プロセスでのスケジューリングポリシーのリセット"
-
-#~ msgid ""
-#~ "More precisely, if the B<SCHED_RESET_ON_FORK> flag is specified, the "
-#~ "following rules apply for subsequently created children:"
-#~ msgstr ""
-#~ "より正確には、 B<SCHED_RESET_ON_FORK> フラグが指定された場合、それ以降に作"
-#~ "成される子プロセスに以下のルールが適用される。"
-
-#~ msgid ""
-#~ "If the calling thread has a scheduling policy of B<SCHED_FIFO> or "
-#~ "B<SCHED_RR>, the policy is reset to B<SCHED_OTHER> in child processes."
-#~ msgstr ""
-#~ "呼び出したスレッドのスケジューリングポリシーが B<SCHED_FIFO> か "
-#~ "B<SCHED_RR> の場合、子プロセスのポリシーは B<SCHED_OTHER> にリセットされ"
-#~ "る。"
-
-#~ msgid ""
-#~ "If the calling process has a negative nice value, the nice value is reset "
-#~ "to zero in child processes."
-#~ msgstr ""
-#~ "子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリ"
-#~ "セットされる。"
-
-#~ msgid ""
-#~ "After the B<SCHED_RESET_ON_FORK> flag has been enabled, it can be reset "
-#~ "only if the thread has the B<CAP_SYS_NICE> capability. This flag is "
-#~ "disabled in child processes created by B<fork>(2)."
-#~ msgstr ""
-#~ "一度 B<SCHED_RESET_ON_FORK> フラグが有効にされた後は、このフラグをリセット"
-#~ "できるのは、スレッドが B<CAP_SYS_NICE> ケーパビリティを持つ場合だけであ"
-#~ "る。このフラグは B<fork>(2) で作成された子プロセスでは無効になる。"
-
-#~ msgid ""
-#~ "The B<SCHED_RESET_ON_FORK> flag is visible in the policy value returned "
-#~ "by B<sched_getscheduler>()"
-#~ msgstr ""
-#~ "B<SCHED_RESET_ON_FORK> フラグは、 B<sched_getscheduler>() が返すポリシー値"
-#~ "で参照できる。"
-
-#~ msgid "Privileges and resource limits"
-#~ msgstr "特権とリソース制限"
-
-#~ msgid ""
-#~ "In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) "
-#~ "threads can set a nonzero static priority (i.e., set a real-time "
-#~ "scheduling policy). The only change that an unprivileged thread can make "
-#~ "is to set the B<SCHED_OTHER> policy, and this can be done only if the "
-#~ "effective user ID of the caller of B<sched_setscheduler>() matches the "
-#~ "real or effective user ID of the target thread (i.e., the thread "
-#~ "specified by I<pid>) whose policy is being changed."
-#~ msgstr ""
-#~ "2.6.12 より前のバージョンの Linux カーネルでは、 特権スレッド "
-#~ "(B<CAP_SYS_NICE> ケーパビリティを持つスレッド) だけが 0 以外の静的優先度を"
-#~ "設定する (すなわち、リアルタイムスケジューリングポリシーを設定する) こ"
-#~ "とができる。 非特権スレッドができる変更は B<SCHED_OTHER> ポリシーを設定す"
-#~ "ることだけであり、さらにこの変更を行えるのは B<sched_setscheduler>() の呼"
-#~ "び出し元の実効ユーザ ID がポリシーの変更対象スレッド (I<pid> で指定された"
-#~ "スレッド) の実ユーザ ID か実効ユーザ ID と 一致する場合だけである。"
-
-#~ msgid ""
-#~ "Since Linux 2.6.12, the B<RLIMIT_RTPRIO> resource limit defines a ceiling "
-#~ "on an unprivileged thread's static priority for the B<SCHED_RR> and "
-#~ "B<SCHED_FIFO> policies. The rules for changing scheduling policy and "
-#~ "priority are as follows:"
-#~ msgstr ""
-#~ "Linux 2.6.12 以降では、リソース制限 B<RLIMIT_RTPRIO> が定義されており、 ス"
-#~ "ケジューリングポリシーが B<SCHED_RR> と B<SCHED_FIFO> の場合の、非特権ス"
-#~ "レッドの静的優先度の上限を定めている。 スケジューリングポリシーと優先度"
-#~ "を変更する際のルールは以下の通りである。"
-
-#~ msgid ""
-#~ "If an unprivileged thread has a nonzero B<RLIMIT_RTPRIO> soft limit, then "
-#~ "it can change its scheduling policy and priority, subject to the "
-#~ "restriction that the priority cannot be set to a value higher than the "
-#~ "maximum of its current priority and its B<RLIMIT_RTPRIO> soft limit."
-#~ msgstr ""
-#~ "非特権スレッドに 0 以外の B<RLIMIT_RTPRIO> ソフトリミットが設定されてい"
-#~ "る場合、 非特権スレッドはそのスレッドのスケジューリングポリシーと優先度"
-#~ "を 変更できるが、優先度を現在の自身の優先度と B<RLIMIT_RTPRIO> ソフトリ"
-#~ "ミットの大きい方よりも高い値に設定できないという制限が課される。"
-
-#~ msgid ""
-#~ "If the B<RLIMIT_RTPRIO> soft limit is 0, then the only permitted changes "
-#~ "are to lower the priority, or to switch to a non-real-time policy."
-#~ msgstr ""
-#~ "B<RLIMIT_RTPRIO> ソフトリミットが 0 の場合、優先度を下げるか、 リアルタ"
-#~ "イムでないポリシーへ切り替えるかの変更だけが許可される。"
-
-#~ msgid ""
-#~ "Subject to the same rules, another unprivileged thread can also make "
-#~ "these changes, as long as the effective user ID of the thread making the "
-#~ "change matches the real or effective user ID of the target thread."
-#~ msgstr ""
-#~ "ある非特権スレッドが別のスレッドに対してこれらの変更を行う際にも、 同じ"
-#~ "ルールが適用される。変更を行えるのは、変更を行おうとするスレッド の実効"
-#~ "ユーザ ID が変更対象のスレッドの実ユーザ ID か実効ユーザ ID と 一致してい"
-#~ "る場合に限られる。"
-
-#~ msgid ""
-#~ "Special rules apply for the B<SCHED_IDLE>. In Linux kernels before "
-#~ "2.6.39, an unprivileged thread operating under this policy cannot change "
-#~ "its policy, regardless of the value of its B<RLIMIT_RTPRIO> resource "
-#~ "limit. In Linux kernels since 2.6.39, an unprivileged thread can switch "
-#~ "to either the B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its "
-#~ "nice value falls within the range permitted by its B<RLIMIT_NICE> "
-#~ "resource limit (see B<getrlimit>(2))."
-#~ msgstr ""
-#~ "B<SCHED_IDLE> の場合には特別なルールが適用される。 2.6.39 より前の Linux "
-#~ "カーネルでは、このポリシーで動作する非特権スレッドは、 B<RLIMIT_RTPRIO> リ"
-#~ "ソース上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 "
-#~ "以降の Linux カーネルでは、非特権スレッドは、自分の nice 値が "
-#~ "B<RLIMIT_NICE> リソース上限 (B<getrlimit>(2) 参照) で許可された範囲である"
-#~ "限りは、自分のスケジューリングポリシーを B<SCHED_BATCH> か "
-#~ "B<SCHED_NORMAL> ポリシーに切り替えることができる。"
-
-#~ msgid ""
-#~ "Privileged (B<CAP_SYS_NICE>) threads ignore the B<RLIMIT_RTPRIO> limit; "
-#~ "as with older kernels, they can make arbitrary changes to scheduling "
-#~ "policy and priority. See B<getrlimit>(2) for further information on "
-#~ "B<RLIMIT_RTPRIO>."
-#~ msgstr ""
-#~ "特権スレッド (B<CAP_SYS_NICE> ケーパビリティを持つスレッド) の場合、 "
-#~ "B<RLIMIT_RTPRIO> の制限は無視される; 古いカーネルと同じように、スケジュー"
-#~ "リングポリシーと優先度に対し 任意の変更を行うことができる。 "
-#~ "B<RLIMIT_RTPRIO> に関するもっと詳しい情報は B<getrlimit>(2) を参照のこ"
-#~ "と。"
-
-#~ msgid "Response time"
-#~ msgstr "応答時間 (response time)"
-
-#~ msgid ""
-#~ "A blocked high priority thread waiting for the I/O has a certain response "
-#~ "time before it is scheduled again. The device driver writer can greatly "
-#~ "reduce this response time by using a \"slow interrupt\" interrupt handler."
-#~ msgstr ""
-#~ "I/O 待ちで停止したより高い優先度のスレッドは再びスケジューリングされる 前"
-#~ "にいくらかの応答時間がかかる。デバイスドライバーを書く場合には \"slow "
-#~ "interrupt\" 割り込みハンドラーを使用することで この応答時間を劇的に減少さ"
-#~ "せることができる。"
-
-#~ msgid "Miscellaneous"
-#~ msgstr "その他"
-
-#~ msgid ""
-#~ "Child processes inherit the scheduling policy and parameters across a "
-#~ "B<fork>(2). The scheduling policy and parameters are preserved across "
-#~ "B<execve>(2)."
-#~ msgstr ""
-#~ "子プロセスは B<fork>(2) の際に親プロセスのスケジューリングポリシーとパ"
-#~ "ラメータを継承する。 B<execve>(2) の前後で、スケジューリングポリシーと"
-#~ "パラメータは保持される。"
-
-#~ msgid ""
-#~ "Memory locking is usually needed for real-time processes to avoid paging "
-#~ "delays; this can be done with B<mlock>(2) or B<mlockall>(2)."
-#~ msgstr ""
-#~ "リアルタイムプロセスは大抵、ページングの待ち時間を避けるために "
-#~ "B<mlock>(2) や B<mlockall>(2) を使ってメモリロックをしなければならな"
-#~ "い。"
-
-#~ msgid ""
-#~ "Since a nonblocking infinite loop in a thread scheduled under "
-#~ "B<SCHED_FIFO> or B<SCHED_RR> will block all threads with lower priority "
-#~ "forever, a software developer should always keep available on the console "
-#~ "a shell scheduled under a higher static priority than the tested "
-#~ "application. This will allow an emergency kill of tested real-time "
-#~ "applications that do not block or terminate as expected. See also the "
-#~ "description of the B<RLIMIT_RTTIME> resource limit in B<getrlimit>(2)."
-#~ msgstr ""
-#~ "B<SCHED_FIFO> や B<SCHED_RR> でスケジューリングされる スレッドが停止せずに"
-#~ "無限ループに陥ると、 他の全てのより低い優先度のスレッドを永久に停止 "
-#~ "(block) させてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優"
-#~ "先度をテストする アプリケーションよりも常に高く保つべきである。 これによっ"
-#~ "て期待通りに停止したり終了したりしないリアルタイム アプリケーションを緊"
-#~ "急終了させることが可能になる。 B<getrlimit>(2) のリソース制限 "
-#~ "B<RLIMIT_RTTIME> の説明も参照のこと。"
-
#~ 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>."
#~ "または I<param> がそのポリシーでは意味をなさない。"
#~ msgid ""
-#~ "Originally, Standard Linux was intended as a general-purpose operating "
-#~ "system being able to handle background processes, interactive "
-#~ "applications, and less demanding real-time applications (applications "
-#~ "that need to usually meet timing deadlines). Although the Linux kernel "
-#~ "2.6 allowed for kernel preemption and the newly introduced O(1) scheduler "
-#~ "ensures that the time needed to schedule is fixed and deterministic "
-#~ "irrespective of the number of active tasks, true real-time computing was "
-#~ "not possible up to kernel version 2.6.17."
-#~ msgstr ""
-#~ "もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計さ"
-#~ "れており、バックグラウンドプロセスや対話的アプリケーション、 リアルタイ"
-#~ "ム性の要求が厳しくないリアルタイムアプリケーション (普通はタイミングの応"
-#~ "答期限 (deadline) を満たす必要があるアプリケーション) を扱うことができ"
-#~ "た。 Linux カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換"
-#~ "え) が可能であり、 新たに導入された O(1) スケジューラにより、 アクティブな"
-#~ "タスクの数に関わらずスケジューリングに必要な時間は 固定で確定的 "
-#~ "(deterministic) であることが保証されている。 それにも関わらず、カーネル "
-#~ "2.6.17 までは 真のリアルタイムコンピューティングは実現できなかった。"
-
-#~ msgid "Real-time features in the mainline Linux kernel"
-#~ msgstr "本流の Linux カーネルでのリアルタイム機能"
-
-#~ msgid ""
-#~ "From kernel version 2.6.18 onward, however, Linux is gradually becoming "
-#~ "equipped with real-time capabilities, most of which are derived from the "
-#~ "former I<realtime-preempt> patches developed by Ingo Molnar, Thomas "
-#~ "Gleixner, Steven Rostedt, and others. Until the patches have been "
-#~ "completely merged into the mainline kernel (this is expected to be around "
-#~ "kernel version 2.6.30), they must be installed to achieve the best real-"
-#~ "time performance. These patches are named:"
-#~ msgstr ""
-#~ "カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ\n"
-#~ "あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,\n"
-#~ "Steven Rostedt らによって開発された、 以前の I<realtime-preempt> パッチ\n"
-#~ "からのものである。 これらのパッチが本流のカーネルに完全にマージされるま\n"
-#~ "では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム\n"
-#~ "性能を達成するには realtime-preempt パッチを 組み込まなければならない。\n"
-#~ "これらのパッチは"
-
-#~ msgid "patch-I<kernelversion>-rtI<patchversion>\n"
-#~ msgstr "patch-I<kernelversion>-rtI<patchversion>\n"
-
-#~ msgid ""
-#~ "and can be downloaded from E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/"
-#~ "kernel\\:/projects\\:/rt/> E<.UE .>"
-#~ msgstr ""
-#~ "という名前で、 E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/"
-#~ "projects\\:/rt/> E<.UE> からダウンロードできる。"
-
-#~ msgid ""
-#~ "Without the patches and prior to their full inclusion into the mainline "
-#~ "kernel, the kernel configuration offers only the three preemption classes "
-#~ "B<CONFIG_PREEMPT_NONE>, B<CONFIG_PREEMPT_VOLUNTARY>, and "
-#~ "B<CONFIG_PREEMPT_DESKTOP> which respectively provide no, some, and "
-#~ "considerable reduction of the worst-case scheduling latency."
-#~ msgstr ""
-#~ "このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了"
-#~ "するまでは、カーネルの設定では B<CONFIG_PREEMPT_NONE>, "
-#~ "B<CONFIG_PREEMPT_VOLUNTARY>, B<CONFIG_PREEMPT_DESKTOP> の 3つのプリエンプ"
-#~ "ションクラス (preemption class) だけが提供される。 これらのクラスでは、"
-#~ "最悪の場合のスケジューリング遅延がそれぞれ 全く減らない、いくらか減る、か"
-#~ "なり減る。"
-
-#~ msgid ""
-#~ "With the patches applied or after their full inclusion into the mainline "
-#~ "kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
-#~ "available. If this is selected, Linux is transformed into a regular real-"
-#~ "time operating system. The FIFO and RR scheduling policies that can be "
-#~ "selected using B<sched_setscheduler>() are then used to run a thread "
-#~ "with true real-time priority and a minimum worst-case scheduling latency."
-#~ msgstr ""
-#~ "パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完"
-#~ "了した後では、上記に加えて設定項目として B<CONFIG_PREEMPT_RT> が利用可能に"
-#~ "なる。この項目を選択すると、 Linux は通常のリアルタイムオペレーティング"
-#~ "システムに変身する。 この場合には、 B<sched_setscheduler>() で選択できる "
-#~ "FIFO と RR のスケジューリングポリシーは、 真のリアルタイム優先度を持つス"
-#~ "レッドを最悪の場合のスケジューリング遅延が 最小となる環境で動作させるため"
-#~ "に使われることになる。"
-
-#~ msgid ""
#~ "The Linux kernel source file I<Documentation/scheduler/sched-rt-group.txt>"
#~ msgstr ""
#~ "Linux カーネルソースファイル I<Documentation/scheduler/sched-rt-group.txt>"
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-06-03 01:29+0900\n"
+"POT-Creation-Date: 2014-06-08 01:16+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"
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:26 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: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_setattr.2:26 build/C/man2/sched_setparam.2:30 build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29 build/C/man2/setns.2:8 build/C/man2/unshare.2:20 build/C/man7/sched.7:32
#, 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:26 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: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_setattr.2:26 build/C/man2/sched_setparam.2:30 build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29 build/C/man2/setns.2:8 build/C/man2/unshare.2:20 build/C/man7/sched.7:32
#, 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:27 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: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_setattr.2:27 build/C/man2/sched_setparam.2:31 build/C/man2/sched_setscheduler.2:27 build/C/man2/sched_yield.2:30 build/C/man2/setns.2:9 build/C/man2/unshare.2:21 build/C/man7/sched.7:33
#, no-wrap
msgid "NAME"
msgstr ""
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:30 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: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_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 ""
msgstr ""
#. type: SH
-#: build/C/man3/CPU_SET.3:79 build/C/man2/clone.2:86 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_setparam.2:47 build/C/man2/sched_setscheduler.2:41 build/C/man2/sched_yield.2:36 build/C/man2/setns.2:18 build/C/man2/unshare.2:50
+#: build/C/man3/CPU_SET.3:79 build/C/man2/clone.2:86 build/C/man2/kcmp.2:41 build/C/man2/sched_get_priority_max.2:38 build/C/man3/sched_getcpu.3:55 build/C/man2/sched_rr_get_interval.2:36 build/C/man2/sched_setaffinity.2:49 build/C/man2/sched_setattr.2:41 build/C/man2/sched_setparam.2:47 build/C/man2/sched_setscheduler.2:41 build/C/man2/sched_yield.2:36 build/C/man2/setns.2:18 build/C/man2/unshare.2:50 build/C/man7/sched.7:35
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/CPU_SET.3:210 build/C/man2/clone.2:878 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_setparam.2:87 build/C/man2/sched_setscheduler.2:135 build/C/man2/sched_yield.2:41 build/C/man2/setns.2:70 build/C/man2/unshare.2:207
+#: build/C/man3/CPU_SET.3:210 build/C/man2/clone.2:878 build/C/man2/kcmp.2:127 build/C/man2/sched_get_priority_max.2:97 build/C/man3/sched_getcpu.3:58 build/C/man2/sched_rr_get_interval.2:73 build/C/man2/sched_setaffinity.2:107 build/C/man2/sched_setattr.2:262 build/C/man2/sched_setparam.2:87 build/C/man2/sched_setscheduler.2:135 build/C/man2/sched_yield.2:41 build/C/man2/setns.2:70 build/C/man2/unshare.2:207
#, no-wrap
msgid "RETURN VALUE"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/CPU_SET.3:241 build/C/man2/clone.2:995 build/C/man2/kcmp.2:198 build/C/man3/sched_getcpu.3:70 build/C/man2/sched_setaffinity.2:148 build/C/man2/setns.2:97 build/C/man2/unshare.2:224
+#: build/C/man3/CPU_SET.3:241 build/C/man2/clone.2:995 build/C/man2/kcmp.2:198 build/C/man3/sched_getcpu.3:70 build/C/man2/sched_setaffinity.2:148 build/C/man2/sched_setattr.2:348 build/C/man2/setns.2:97 build/C/man2/unshare.2:224
#, no-wrap
msgid "VERSIONS"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:1002 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_setparam.2:119 build/C/man2/sched_setscheduler.2:170 build/C/man2/sched_yield.2:52 build/C/man2/setns.2:102 build/C/man2/unshare.2:228
+#: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:1002 build/C/man2/kcmp.2:202 build/C/man2/sched_get_priority_max.2:113 build/C/man3/sched_getcpu.3:77 build/C/man2/sched_rr_get_interval.2:94 build/C/man2/sched_setaffinity.2:159 build/C/man2/sched_setattr.2:351 build/C/man2/sched_setparam.2:119 build/C/man2/sched_setscheduler.2:170 build/C/man2/sched_yield.2:52 build/C/man2/setns.2:102 build/C/man2/unshare.2:228
#, no-wrap
msgid "CONFORMING TO"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/CPU_SET.3:272 build/C/man2/clone.2:1006 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_setparam.2:121 build/C/man2/sched_setscheduler.2:173 build/C/man2/sched_yield.2:54 build/C/man2/setns.2:106 build/C/man2/unshare.2:232
+#: build/C/man3/CPU_SET.3:272 build/C/man2/clone.2:1006 build/C/man2/kcmp.2:205 build/C/man3/sched_getcpu.3:80 build/C/man2/sched_rr_get_interval.2:96 build/C/man2/sched_setaffinity.2:161 build/C/man2/sched_setattr.2:353 build/C/man2/sched_setparam.2:121 build/C/man2/sched_setscheduler.2:173 build/C/man2/sched_yield.2:54 build/C/man2/setns.2:106 build/C/man2/unshare.2:232 build/C/man7/sched.7:612
#, no-wrap
msgid "NOTES"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/CPU_SET.3:300 build/C/man2/clone.2:1031 build/C/man2/sched_setscheduler.2:214
+#: build/C/man3/CPU_SET.3:300 build/C/man2/clone.2:1031 build/C/man2/sched_setattr.2:369 build/C/man2/sched_setscheduler.2:214
#, no-wrap
msgid "BUGS"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/CPU_SET.3:356 build/C/man2/clone.2:1170 build/C/man2/kcmp.2:222 build/C/man2/sched_get_priority_max.2:115 build/C/man3/sched_getcpu.3:100 build/C/man2/sched_rr_get_interval.2:132 build/C/man2/sched_setaffinity.2:214 build/C/man2/sched_setparam.2:127 build/C/man2/sched_setscheduler.2:222 build/C/man2/sched_yield.2:79 build/C/man2/setns.2:199 build/C/man2/unshare.2:266
+#: build/C/man3/CPU_SET.3:356 build/C/man2/clone.2:1170 build/C/man2/kcmp.2:222 build/C/man2/sched_get_priority_max.2:115 build/C/man3/sched_getcpu.3:100 build/C/man2/sched_rr_get_interval.2:132 build/C/man2/sched_setaffinity.2:214 build/C/man2/sched_setattr.2:385 build/C/man2/sched_setparam.2:127 build/C/man2/sched_setscheduler.2:222 build/C/man2/sched_yield.2:79 build/C/man2/setns.2:199 build/C/man2/unshare.2:266 build/C/man7/sched.7:665
#, no-wrap
msgid "SEE ALSO"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/CPU_SET.3:361 build/C/man2/clone.2:1184 build/C/man2/kcmp.2:225 build/C/man2/sched_get_priority_max.2:125 build/C/man3/sched_getcpu.3:103 build/C/man2/sched_rr_get_interval.2:134 build/C/man2/sched_setaffinity.2:234 build/C/man2/sched_setparam.2:142 build/C/man2/sched_setscheduler.2:241 build/C/man2/sched_yield.2:81 build/C/man2/setns.2:205 build/C/man2/unshare.2:275
+#: build/C/man3/CPU_SET.3:361 build/C/man2/clone.2:1184 build/C/man2/kcmp.2:225 build/C/man2/sched_get_priority_max.2:125 build/C/man3/sched_getcpu.3:103 build/C/man2/sched_rr_get_interval.2:134 build/C/man2/sched_setaffinity.2:234 build/C/man2/sched_setattr.2:407 build/C/man2/sched_setparam.2:142 build/C/man2/sched_setscheduler.2:241 build/C/man2/sched_yield.2:81 build/C/man2/setns.2:205 build/C/man2/unshare.2:275 build/C/man7/sched.7:702
#, no-wrap
msgid "COLOPHON"
msgstr ""
#. type: Plain text
-#: build/C/man3/CPU_SET.3:369 build/C/man2/clone.2:1192 build/C/man2/kcmp.2:233 build/C/man2/sched_get_priority_max.2:133 build/C/man3/sched_getcpu.3:111 build/C/man2/sched_rr_get_interval.2:142 build/C/man2/sched_setaffinity.2:242 build/C/man2/sched_setparam.2:150 build/C/man2/sched_setscheduler.2:249 build/C/man2/sched_yield.2:89 build/C/man2/setns.2:213 build/C/man2/unshare.2:283
+#: build/C/man3/CPU_SET.3:369 build/C/man2/clone.2:1192 build/C/man2/kcmp.2:233 build/C/man2/sched_get_priority_max.2:133 build/C/man3/sched_getcpu.3:111 build/C/man2/sched_rr_get_interval.2:142 build/C/man2/sched_setaffinity.2:242 build/C/man2/sched_setattr.2:415 build/C/man2/sched_setparam.2:150 build/C/man2/sched_setscheduler.2:249 build/C/man2/sched_yield.2:89 build/C/man2/setns.2:213 build/C/man2/unshare.2:283 build/C/man7/sched.7:710
msgid ""
"This page is part of release 3.67 of the Linux I<man-pages> project. A "
"description of the project, information about reporting bugs, and the latest "
msgstr ""
#. type: Plain text
-#: build/C/man2/clone.2:53 build/C/man3/sched_getcpu.3:32 build/C/man2/sched_setparam.2:36 build/C/man2/sched_setscheduler.2:33 build/C/man2/unshare.2:26
+#: build/C/man2/clone.2:53 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 ""
msgstr ""
#. type: SH
-#: build/C/man2/clone.2:887 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_setparam.2:96 build/C/man2/sched_setscheduler.2:145 build/C/man2/sched_yield.2:48 build/C/man2/setns.2:77 build/C/man2/unshare.2:212
+#: build/C/man2/clone.2:887 build/C/man2/kcmp.2:170 build/C/man2/sched_get_priority_max.2:107 build/C/man3/sched_getcpu.3:65 build/C/man2/sched_rr_get_interval.2:80 build/C/man2/sched_setaffinity.2:116 build/C/man2/sched_setattr.2:271 build/C/man2/sched_setparam.2:96 build/C/man2/sched_setscheduler.2:145 build/C/man2/sched_yield.2:48 build/C/man2/setns.2:77 build/C/man2/unshare.2:212
#, no-wrap
msgid "ERRORS"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/clone.2:891 build/C/man2/clone.2:898 build/C/man2/clone.2:913 build/C/man2/clone.2:921 build/C/man2/clone.2:929 build/C/man2/clone.2:937 build/C/man2/clone.2:943 build/C/man2/clone.2:953 build/C/man2/clone.2:961 build/C/man2/clone.2:969 build/C/man2/kcmp.2:181 build/C/man2/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_setparam.2:97 build/C/man2/sched_setparam.2:104 build/C/man2/sched_setscheduler.2:146 build/C/man2/sched_setscheduler.2:153 build/C/man2/sched_setscheduler.2:158 build/C/man2/setns.2:82 build/C/man2/unshare.2:213
+#: build/C/man2/clone.2:891 build/C/man2/clone.2:898 build/C/man2/clone.2:913 build/C/man2/clone.2:921 build/C/man2/clone.2:929 build/C/man2/clone.2:937 build/C/man2/clone.2:943 build/C/man2/clone.2:953 build/C/man2/clone.2:961 build/C/man2/clone.2:969 build/C/man2/kcmp.2:181 build/C/man2/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:82 build/C/man2/unshare.2:213
#, no-wrap
msgid "B<EINVAL>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/clone.2:982 build/C/man2/clone.2:991 build/C/man2/kcmp.2:185 build/C/man2/sched_setaffinity.2:135 build/C/man2/sched_setparam.2:109 build/C/man2/sched_setscheduler.2:164 build/C/man2/setns.2:92 build/C/man2/unshare.2:221
+#: build/C/man2/clone.2:982 build/C/man2/clone.2:991 build/C/man2/kcmp.2:185 build/C/man2/sched_setaffinity.2:135 build/C/man2/sched_setattr.2:339 build/C/man2/sched_setattr.2:342 build/C/man2/sched_setparam.2:109 build/C/man2/sched_setscheduler.2:164 build/C/man2/setns.2:92 build/C/man2/unshare.2:221
#, no-wrap
msgid "B<EPERM>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/kcmp.2:191 build/C/man2/sched_rr_get_interval.2:90 build/C/man2/sched_setaffinity.2:145 build/C/man2/sched_setparam.2:116 build/C/man2/sched_setscheduler.2:167
+#: 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 ""
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setaffinity.2:148 build/C/man2/sched_setscheduler.2:170
+#: 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 ""
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_setattr.2:26 build/C/man7/sched.7:32
#, no-wrap
-msgid "2014-05-11"
+msgid "2014-05-13"
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:38
+#: build/C/man2/sched_setattr.2:36
#, no-wrap
msgid ""
-"B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param "
-"*>I<param>B<);>\n"
+"B<int sched_setattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
+"B< unsigned int >I<flags>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setparam.2:40
+#: build/C/man2/sched_setattr.2:39
#, no-wrap
-msgid "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
+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: Plain text
-#: build/C/man2/sched_setparam.2:46
+#. type: SS
+#: build/C/man2/sched_setattr.2:42
#, no-wrap
-msgid ""
-"B<struct sched_param {\n"
-" ...\n"
-" int >I<sched_priority>B<;\n"
-" ...\n"
-"};>\n"
+msgid "sched_setattr()"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setparam.2:60
+#: build/C/man2/sched_setattr.2:52
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."
+"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_setparam.2:66
+#: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:73
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."
+"Currently, Linux supports the following \"normal\" (i.e., non-real-time) "
+"scheduling policies as values that may be specified in I<policy>:"
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)."
+#. 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_setparam.2:79
-msgid ""
-"For a discussion of the privileges and resource limits related to scheduling "
-"priority and policy, see B<sched>(7)."
+#: build/C/man2/sched_setattr.2:61 build/C/man2/sched_setscheduler.2:78
+msgid "the standard round-robin time-sharing policy;"
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>>."
+#. 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_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."
+#: build/C/man2/sched_setattr.2:64 build/C/man2/sched_setscheduler.2:81
+msgid "for \"batch\" style execution of processes; and"
msgstr ""
-#. type: Plain text
-#: build/C/man2/sched_setparam.2:104
-msgid "Invalid arguments: I<param> is NULL or I<pid> is negative"
+#. 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_setparam.2:109
-msgid ""
-"(B<sched_setparam>()) The argument I<param> does not make sense for the "
-"current scheduling policy."
+#: 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_setparam.2:116
+#: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:99
msgid ""
-"(B<sched_setparam>()) The calling process does not have appropriate "
-"privileges (Linux: does not have the B<CAP_SYS_NICE> capability)."
+"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_setparam.2:119
-msgid "The process whose ID is I<pid> could not be found."
+#: 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_setparam.2:127
-msgid ""
-"Scheduling parameters are in fact per-thread attributes on Linux; see "
-"B<sched>(7)."
+#: 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_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)"
+#: build/C/man2/sched_setattr.2:86
+msgid "Linux also provides the following policy:"
msgstr ""
-#. type: TH
-#: build/C/man2/sched_setscheduler.2:26
+#. type: TP
+#: build/C/man2/sched_setattr.2:86
#, no-wrap
-msgid "SCHED_SETSCHEDULER"
+msgid "B<SCHED_DEADLINE>"
msgstr ""
-#. type: TH
-#: build/C/man2/sched_setscheduler.2:26
-#, no-wrap
-msgid "2014-05-21"
+#. 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_setscheduler.2:30
+#: build/C/man2/sched_setattr.2:97
msgid ""
-"sched_setscheduler, sched_getscheduler - set and get scheduling "
-"policy/parameters"
+"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_setscheduler.2:35
+#: build/C/man2/sched_setattr.2:113
#, no-wrap
-msgid "B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
+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_setscheduler.2:37
-#, no-wrap
-msgid "B< const struct sched_param *>I<param>B<);>\n"
+#: build/C/man2/sched_setattr.2:117
+msgid "The fields of this structure are as follows:"
msgstr ""
-#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:39
+#. type: TP
+#: build/C/man2/sched_setattr.2:117
#, no-wrap
-msgid "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
+msgid "B<size>"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:49
+#: build/C/man2/sched_setattr.2:132
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."
+"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_setscheduler.2:53
+#: build/C/man2/sched_setattr.2:146
msgid ""
-"The scheduling parameters are specified in the I<param> argument, which is a "
-"pointer to a structure of the following form:"
+"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: Plain text
-#: build/C/man2/sched_setscheduler.2:61
+#. type: TP
+#: build/C/man2/sched_setattr.2:146
#, 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."
+msgid "I<sched_policy>"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:73
+#: build/C/man2/sched_setattr.2:151
msgid ""
-"Currently, Linux supports the following \"normal\" (i.e., non-real-time) "
-"scheduling policies as values that may be specified in I<policy>:"
+"This field specifies the scheduling policy, as one of the B<SCHED_*> values "
+"listed above."
msgstr ""
#. type: TP
-#: build/C/man2/sched_setscheduler.2:73
+#: build/C/man2/sched_setattr.2:151
#, no-wrap
-msgid "B<SCHED_OTHER>"
+msgid "I<sched_flags>"
msgstr ""
-#. In the 2.6 kernel sources, SCHED_OTHER is actually called
-#. SCHED_NORMAL.
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:78
-msgid "the standard round-robin time-sharing policy;"
+#: 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_setscheduler.2:78
+#: build/C/man2/sched_setattr.2:162
#, no-wrap
-msgid "B<SCHED_BATCH>"
+msgid "I<sched_nice>"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:81
-msgid "for \"batch\" style execution of processes; and"
+#: 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_setscheduler.2:81
+#: build/C/man2/sched_setattr.2:173
#, no-wrap
-msgid "B<SCHED_IDLE>"
+msgid "I<sched_priority>"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:86
-msgid "for running I<very> low priority background jobs."
+#: 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: 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."
+#. type: TP
+#: build/C/man2/sched_setattr.2:186
+#, no-wrap
+msgid "I<sched_runtime>"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:99
+#: build/C/man2/sched_setattr.2:195
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:"
+"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_setscheduler.2:99
+#: build/C/man2/sched_setattr.2:195
#, no-wrap
-msgid "B<SCHED_FIFO>"
+msgid "I<sched_deadline>"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:102
-msgid "a first-in, first-out policy; and"
+#: 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_setscheduler.2:102
+#: build/C/man2/sched_setattr.2:199
#, no-wrap
-msgid "B<SCHED_RR>"
+msgid "I<sched_period>"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:105
-msgid "a round-robin policy."
+#: 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_setscheduler.2:116
+#: build/C/man2/sched_setattr.2:210 build/C/man2/sched_setattr.2:262
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_min>(2) "
-"with the specified I<policy>. On Linux, these system calls return, "
-"respectively, 1 and 99."
+"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: 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."
+#. type: SS
+#: build/C/man2/sched_setattr.2:210
+#, no-wrap
+msgid "sched_getattr()"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:135
+#: build/C/man2/sched_setattr.2:221
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 "
+"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_setscheduler.2:145
+#: build/C/man2/sched_setattr.2:231
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."
+"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_setscheduler.2:153
-msgid "Invalid arguments: I<pid> is negative or I<param> is NULL."
+#: 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_setscheduler.2:158
-msgid "(B<sched_setscheduler>()) I<policy> is not one of the recognized policies."
+#: 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_setscheduler.2:164
+#: build/C/man2/sched_setattr.2:271
msgid ""
-"(B<sched_setscheduler>()) I<param> does not make sense for the specified "
-"I<policy>."
+"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_setscheduler.2:167
-msgid "The calling thread does not have appropriate privileges."
+#: 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_setscheduler.2:173
-msgid ""
-"POSIX.1-2001 (but see BUGS below). The B<SCHED_BATCH> and B<SCHED_IDLE> "
-"policies are Linux-specific."
+#: 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_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)."
+#: 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_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>>."
+#: 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_setscheduler.2:193
+#: build/C/man2/sched_setattr.2:306
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."
+"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_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.)"
+#: 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_setscheduler.2:222
+#: build/C/man2/sched_setattr.2:318
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."
+"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:406
+msgid ""
+"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
+#: build/C/man2/sched_setparam.2:38
+#, no-wrap
+msgid ""
+"B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param "
+"*>I<param>B<);>\n"
+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"
+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: TH
+#: build/C/man2/sched_setscheduler.2:26
+#, no-wrap
+msgid "2014-05-21"
+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_min>(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:240
+msgid ""
+"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
+"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
+"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+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_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:66
+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:79
+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: TH
+#: build/C/man2/setns.2:8
+#, no-wrap
+msgid "SETNS"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/setns.2:8
+#, no-wrap
+msgid "2013-01-01"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:11
+msgid "setns - reassociate thread with a namespace"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:17
+#, no-wrap
+msgid "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:21
+msgid ""
+"Given a file descriptor referring to a namespace, reassociate the calling "
+"thread with that namespace."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:34
+msgid ""
+"The I<fd> argument is a file descriptor referring to one of the namespace "
+"entries in a I</proc/[pid]/ns/> directory; see B<proc>(5) for further "
+"information on I</proc/[pid]/ns/>. The calling thread will be reassociated "
+"with the corresponding namespace, subject to any constraints imposed by the "
+"I<nstype> argument."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:40
+msgid ""
+"The I<nstype> argument specifies which type of namespace the calling thread "
+"may be reassociated with. This argument can have one of the following "
+"values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/setns.2:40
+#, no-wrap
+msgid "B<0>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:43
+msgid "Allow any type of namespace to be joined."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/setns.2:43
+#, no-wrap
+msgid "B<CLONE_NEWIPC>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:47
+msgid "I<fd> must refer to an IPC namespace."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/setns.2:47
+#, no-wrap
+msgid "B<CLONE_NEWNET>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:51
+msgid "I<fd> must refer to a network namespace."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/setns.2:51
+#, no-wrap
+msgid "B<CLONE_NEWUTS>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:55
+msgid "I<fd> must refer to a UTS namespace."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:70
+msgid ""
+"Specifying I<nstype> as 0 suffices if the caller knows (or does not care) "
+"what type of namespace is referred to by I<fd>. Specifying a nonzero value "
+"for I<nstype> is useful if the caller does not know what type of namespace "
+"is referred to by I<fd> and wants to ensure that the namespace is of a "
+"particular type. (The caller might not know the type of the namespace "
+"referred to by I<fd> if the file descriptor was opened by another process "
+"and, for example, passed to the caller via a UNIX domain socket.)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:77
+msgid ""
+"On success, I<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
+msgid "I<fd> is not a valid file descriptor."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:89
+msgid ""
+"I<fd> refers to a namespace whose type does not match that specified in "
+"I<nstype>, or there is problem with reassociating the the thread with the "
+"specified namespace."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:92
+msgid "Cannot allocate sufficient memory to change the specified namespace."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:97
+msgid ""
+"The calling thread did not have the required privilege (B<CAP_SYS_ADMIN>) "
+"for this operation."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:102
+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
+msgid "The B<setns>() system call is Linux-specific."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:112
+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
+msgid ""
+"The program below takes two or more arguments. The first argument specifies "
+"the pathname of a namespace file in an existing I</proc/[pid]/ns/> "
+"directory. The remaining arguments specify a command and its arguments. "
+"The program opens the namespace file, joins that namespace using B<setns>(), "
+"and executes the specified command inside that namespace."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:131
+msgid ""
+"The following shell session demonstrates the use of this program (compiled "
+"as a binary named I<ns_exec>) in conjunction with the B<CLONE_NEWUTS> "
+"example program in the B<clone>(2) man page (complied as a binary named "
+"I<newuts>)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:139
+msgid ""
+"We begin by executing the example program in B<clone>(2) in the "
+"background. That program creates a child in a separate UTS namespace. The "
+"child changes the hostname in its namespace, and then both processes display "
+"the hostnames in their UTS namespaces, so that we can see that they are "
+"different."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:151
+#, no-wrap
+msgid ""
+"$ B<su> # Need privilege for namespace operations\n"
+"Password:\n"
+"# B<./newuts bizarro &>\n"
+"[1] 3549\n"
+"clone() returned 3550\n"
+"uts.nodename in child: bizarro\n"
+"uts.nodename in parent: antero\n"
+"# B<uname -n> # Verify hostname in the shell\n"
+"antero\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:158
+msgid ""
+"We then run the program shown below, using it to execute a shell. Inside "
+"that shell, we verify that the hostname is the one set by the child created "
+"by the first program:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:164
+#, no-wrap
+msgid ""
+"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
+"# B<uname -n> # Executed in shell started by ns_exec\n"
+"bizarro\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:174
+#, no-wrap
+msgid ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>sched.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:182
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int fd;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:187
+#, no-wrap
+msgid ""
+" if (argc E<lt> 3) {\n"
+" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", "
+"argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:191
+#, no-wrap
+msgid ""
+" 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
+#, no-wrap
+msgid ""
+" if (setns(fd, 0) == -1) /* Join that namespace */\n"
+" errExit(\"setns\");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/setns.2:198
+#, no-wrap
+msgid ""
+" 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)"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/unshare.2:20
+#, no-wrap
+msgid "UNSHARE"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/unshare.2:20
+#, no-wrap
+msgid "2013-04-17"
+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:28
+#, no-wrap
+msgid "B<int unshare(int >I<flags>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: 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 "
+"execution context, such as the mount namespace, is shared implicitly when a "
+"new process is created using B<fork>(2) or B<vfork>(2), while other parts, "
+"such as virtual memory, may be shared by explicit request when creating a "
+"process using B<clone>(2)."
+msgstr ""
+
+#. type: Plain text
+#: 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:74
+msgid ""
+"The I<flags> argument is a bit mask that specifies which parts of the "
+"execution context should be unshared. This argument is specified by ORing "
+"together zero or more of the following constants:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/unshare.2:74
+#, no-wrap
+msgid "B<CLONE_FILES>"
+msgstr ""
+
+#. type: Plain text
+#: 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 "
+"descriptors with any other process."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/unshare.2:82
+#, no-wrap
+msgid "B<CLONE_FS>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:96
+msgid ""
+"Reverse the effect of the B<clone>(2) B<CLONE_FS> flag. Unshare filesystem "
+"attributes, so that the calling process no longer shares its root directory "
+"(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2)) "
+"attributes with any other process."
+msgstr ""
+
+#. type: Plain text
+#: 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 "
+"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:128
+msgid ""
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
+"Unshare the network namespace, so that the calling process is moved into a "
+"new network namespace which is not shared with any previously existing "
+"process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/unshare.2:128
+#, no-wrap
+msgid "B<CLONE_NEWNS>"
+msgstr ""
+
+#. These flag name are inconsistent:
+#. CLONE_NEWNS does the same thing in clone(), but CLONE_VM,
+#. CLONE_FS, and CLONE_FILES reverse the action of the clone()
+#. flags of the same name.
+#. type: Plain text
+#: build/C/man2/unshare.2:149
+msgid ""
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
+"Unshare the mount namespace, so that the calling process has a private copy "
+"of its namespace which is not shared with any other process. Specifying "
+"this flag automatically implies B<CLONE_FS> as well. Use of B<CLONE_NEWNS> "
+"requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:163
+msgid ""
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWUTS> flag. "
+"Unshare the UTS IPC namespace, so that the calling process has a private "
+"copy of the UTS namespace which is not shared with any other process. Use "
+"of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/unshare.2:163
+#, 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,
+#. although the relevant flags are not yet implemented.
+#. If CLONE_THREAD is set force CLONE_VM.
+#. If CLONE_VM is set, force CLONE_SIGHAND.
+#. CLONE_NEWNSIf CLONE_SIGHAND is set and signals are also being shared
+#. (i.e., current->signal->count > 1), force CLONE_THREAD.
+#
+#. FIXME . CLONE_VM is not (yet, as at 2.6.16) implemented.
+#. .TP
+#. .B CLONE_VM
+#. Reverse the effect of the
+#. .BR clone (2)
+#. .B CLONE_VM
+#. flag.
+#. .RB ( CLONE_VM
+#. is also implicitly set by
+#. .BR vfork (2),
+#. and can be reversed using this
+#. .BR unshare ()
+#. flag.)
+#. Unshare virtual memory, so that the calling process no
+#. longer shares its virtual address space with any other process.
+#. type: Plain text
+#: build/C/man2/unshare.2:200
+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."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:207
+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:212
+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:217
+msgid "An invalid bit was specified in I<flags>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:221
+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:224
+msgid "The calling process did not have the required privileges for this operation."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:228
+msgid "The B<unshare>() system call was added to Linux in kernel 2.6.16."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:232
+msgid "The B<unshare>() system call is Linux-specific."
+msgstr ""
+
+#. FIXME all of the following needs to be reviewed for the current kernel
+#. However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND
+#. was not specified when doing clone(); i.e., unsharing
+#. signal handlers is permitted if we are not actually
+#. sharing signal handlers. mtk
+#. However, we can do unshare(CLONE_VM) if CLONE_VM
+#. was not specified when doing clone(); i.e., unsharing
+#. virtual memory is permitted if we are not actually
+#. sharing virtual memory. mtk
+#
+#. 9) Future Work
+#. --------------
+#. The current implementation of unshare does not allow unsharing of
+#. signals and signal handlers. Signals are complex to begin with and
+#. to unshare signals and/or signal handlers of a currently running
+#. process is even more complex. If in the future there is a specific
+#. need to allow unsharing of signals and/or signal handlers, it can
+#. be incrementally added to unshare without affecting legacy
+#. applications using unshare.
+#. type: Plain text
+#: build/C/man2/unshare.2:266
+msgid ""
+"Not all of the process attributes that can be shared when a new process is "
+"created using B<clone>(2) can be unshared using B<unshare>(). In "
+"particular, as at kernel 3.8, B<unshare>() does not implement flags that "
+"reverse the effects of B<CLONE_SIGHAND>, B<CLONE_THREAD>, or B<CLONE_VM>. "
+"Such functionality may be added in the future, if required."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:272
+msgid "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/unshare.2:275
+msgid "I<Documentation/unshare.txt> in the Linux kernel source tree"
+msgstr ""
+
+#. type: TH
+#: build/C/man7/sched.7:32
+#, no-wrap
+msgid "SCHED"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:240
+#: build/C/man7/sched.7:35
+msgid "sched - overview of scheduling APIs"
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:36
+#, no-wrap
+msgid "API summary"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:38
+msgid "The Linux scheduling APIs are as follows:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:38
+#, no-wrap
+msgid "B<sched_setscheduler>(2)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:41
+msgid "Set the scheduling policy and parameters of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:41
+#, no-wrap
+msgid "B<sched_getscheduler>(2)"
+msgstr ""
+
+#. type: Plain text
+#: 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<sched_setparam>(2)"
+msgstr ""
+
+#. type: Plain text
+#: 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<sched_getparam>(2)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:50
+msgid "Fetch the scheduling parameters of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:50
+#, no-wrap
+msgid "B<sched_get_priority_max>(2)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:53
+msgid "Return the minimum priority available in a specified scheduling policy."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:53
+#, no-wrap
+msgid "B<sched_get_priority_min>(2)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:56
+msgid "Return the maximum priority available in a specified scheduling policy."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:56
+#, no-wrap
+msgid "B<sched_rr_get_interval>(2)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:60
msgid ""
-"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
-"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
-"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
-"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
-"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+"Fetch the quantum used for threads that are scheduled under the "
+"\"round-robin\" scheduling policy."
msgstr ""
-#. type: TH
-#: build/C/man2/sched_yield.2:29
+#. type: TP
+#: build/C/man7/sched.7:60
#, no-wrap
-msgid "SCHED_YIELD"
+msgid "B<sched_yield>(2)"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_yield.2:32
-msgid "sched_yield - yield the processor"
+#: build/C/man7/sched.7:64
+msgid ""
+"Cause the caller to relinquish the CPU, so that some other thread be "
+"executed."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:64
+#, no-wrap
+msgid "B<sched_setaffinity>(2)"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_yield.2:36
-msgid "B<int sched_yield(void);>"
+#: build/C/man7/sched.7:68
+msgid "(Linux-specific) Set the CPU affinity of a specified thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:68
+#, no-wrap
+msgid "B<sched_getaffinity>(2)"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_yield.2:41
+#: 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/man7/sched.7:79
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."
+"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_yield.2:48
+#: build/C/man7/sched.7:87
msgid ""
-"On success, B<sched_yield>() returns 0. On error, -1 is returned, and "
-"I<errno> is set appropriately."
+"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/man7/sched.7:87
+#, no-wrap
+msgid "Scheduling policies"
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_yield.2:52
-msgid "In the Linux implementation, B<sched_yield>() always succeeds."
+#: build/C/man7/sched.7:95
+msgid ""
+"The scheduler is the kernel component that decides which runnable thread "
+"will be executed by the CPU next. Each thread has an associated scheduling "
+"policy and a I<static> scheduling priority, I<sched_priority>. The "
+"scheduler makes its decisions based on knowledge of the scheduling policy "
+"and static priority of all threads on the system."
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_yield.2:59
+#: build/C/man7/sched.7:100
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>()."
+"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_yield.2:66
+#: build/C/man7/sched.7:114
msgid ""
-"POSIX systems on which B<sched_yield>() is available define "
-"B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
+"Processes scheduled under one of the real-time policies (B<SCHED_FIFO>, "
+"B<SCHED_RR>) have a I<sched_priority> value in the range 1 (low) to 99 "
+"(high). (As the numbers imply, real-time threads always have higher "
+"priority than normal threads.) Note well: POSIX.1-2001 requires an "
+"implementation to support only a minimum 32 distinct priority levels for the "
+"real-time policies, and some systems supply just this minimum. Portable "
+"programs should use B<sched_get_priority_min>(2) and "
+"B<sched_get_priority_max>(2) to find the range of priorities supported for "
+"a particular policy."
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_yield.2:79
+#: build/C/man7/sched.7:120
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."
+"Conceptually, the scheduler maintains a list of runnable threads for each "
+"possible I<sched_priority> value. In order to determine which thread runs "
+"next, the scheduler looks for the nonempty list with the highest static "
+"priority and selects the thread at the head of this list."
msgstr ""
-#. type: TH
-#: build/C/man2/setns.2:8
+#. type: Plain text
+#: build/C/man7/sched.7:124
+msgid ""
+"A thread's scheduling policy determines where it will be inserted into the "
+"list of threads with equal static priority and how it will move inside this "
+"list."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:132
+msgid ""
+"All scheduling is preemptive: if a thread with a higher static priority "
+"becomes ready to run, the currently running thread will be preempted and "
+"returned to the wait list for its static priority level. The scheduling "
+"policy determines the ordering only within the list of runnable threads with "
+"equal static priority."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:132
#, no-wrap
-msgid "SETNS"
+msgid "SCHED_FIFO: First in-first out scheduling"
msgstr ""
-#. type: TH
-#: build/C/man2/setns.2:8
+#. type: Plain text
+#: build/C/man7/sched.7:141
+msgid ""
+"B<SCHED_FIFO> can be used only with static priorities higher than 0, which "
+"means that when a B<SCHED_FIFO> threads becomes runnable, it will always "
+"immediately preempt any currently running B<SCHED_OTHER>, B<SCHED_BATCH>, or "
+"B<SCHED_IDLE> thread. B<SCHED_FIFO> is a simple scheduling algorithm "
+"without time slicing. For threads scheduled under the B<SCHED_FIFO> policy, "
+"the following rules apply:"
+msgstr ""
+
+#. type: IP
+#: build/C/man7/sched.7:141 build/C/man7/sched.7:146 build/C/man7/sched.7:149 build/C/man7/sched.7:164 build/C/man7/sched.7:413 build/C/man7/sched.7:422 build/C/man7/sched.7:445 build/C/man7/sched.7:453 build/C/man7/sched.7:492 build/C/man7/sched.7:500 build/C/man7/sched.7:505 build/C/man7/sched.7:510
#, no-wrap
-msgid "2013-01-01"
+msgid "*"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:11
-msgid "setns - reassociate thread with a namespace"
+#: build/C/man7/sched.7:146
+msgid ""
+"A B<SCHED_FIFO> thread that has been preempted by another thread of higher "
+"priority will stay at the head of the list for its priority and will resume "
+"execution as soon as all threads of higher priority are blocked again."
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:17
-#, no-wrap
-msgid "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
+#: build/C/man7/sched.7:149
+msgid ""
+"When a B<SCHED_FIFO> thread becomes runnable, it will be inserted at the end "
+"of the list for its priority."
msgstr ""
+#. In 2.2.x and 2.4.x, the thread is placed at the front of the queue
+#. In 2.0.x, the Right Thing happened: the thread went to the back -- MTK
#. type: Plain text
-#: build/C/man2/setns.2:21
+#: build/C/man7/sched.7:164
msgid ""
-"Given a file descriptor referring to a namespace, reassociate the calling "
-"thread with that namespace."
+"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/setns.2:34
+#: 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/man7/sched.7:172
msgid ""
-"The I<fd> argument is a file descriptor referring to one of the namespace "
-"entries in a I</proc/[pid]/ns/> directory; see B<proc>(5) for further "
-"information on I</proc/[pid]/ns/>. The calling thread will be reassociated "
-"with the corresponding namespace, subject to any constraints imposed by the "
-"I<nstype> argument."
+"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/setns.2:40
+#: build/C/man7/sched.7:177
msgid ""
-"The I<nstype> argument specifies which type of namespace the calling thread "
-"may be reassociated with. This argument can have one of the following "
-"values:"
+"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: TP
-#: build/C/man2/setns.2:40
+#. type: SS
+#: build/C/man7/sched.7:177
#, no-wrap
-msgid "B<0>"
+msgid "SCHED_RR: Round-robin scheduling"
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/setns.2:43
-msgid "Allow any type of namespace to be joined."
+#: build/C/man7/sched.7:196
+msgid ""
+"B<SCHED_RR> is a simple enhancement of B<SCHED_FIFO>. Everything described "
+"above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except that each thread "
+"is allowed to run only for a maximum time quantum. If a B<SCHED_RR> thread "
+"has been running for a time period equal to or longer than the time quantum, "
+"it will be put at the end of the list for its priority. A B<SCHED_RR> "
+"thread that has been preempted by a higher priority thread and subsequently "
+"resumes execution as a running thread will complete the unexpired portion of "
+"its round-robin time quantum. The length of the time quantum can be "
+"retrieved using B<sched_rr_get_interval>(2)."
msgstr ""
-#. type: TP
-#: build/C/man2/setns.2:43
+#. type: SS
+#: build/C/man7/sched.7:196
#, no-wrap
-msgid "B<CLONE_NEWIPC>"
+msgid "SCHED_DEADLINE: Sporadic task model deadline scheduling"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:47
-msgid "I<fd> must refer to an IPC namespace."
+#: 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: TP
-#: build/C/man2/setns.2:47
-#, no-wrap
-msgid "B<CLONE_NEWNET>"
+#. 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/man2/setns.2:51
-msgid "I<fd> must refer to a network namespace."
+#: build/C/man7/sched.7:228
+msgid "The following diagram clarifies these terms:"
msgstr ""
-#. type: TP
-#: build/C/man2/setns.2:51
+#. type: Plain text
+#: build/C/man7/sched.7:239
#, no-wrap
-msgid "B<CLONE_NEWUTS>"
+msgid ""
+"arrival/wakeup absolute deadline\n"
+" | start time |\n"
+" | | |\n"
+" v v v\n"
+"-----x--------xooooooooooooooooo--------x--------x---\n"
+" |E<lt>- comp. time -E<gt>|\n"
+" |E<lt>------- relative deadline ------E<gt>|\n"
+" |E<lt>-------------- period -------------------E<gt>|\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:55
-msgid "I<fd> must refer to a UTS namespace."
+#: 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/man2/setns.2:70
+#: build/C/man7/sched.7:269
+#, no-wrap
msgid ""
-"Specifying I<nstype> as 0 suffices if the caller knows (or does not care) "
-"what type of namespace is referred to by I<fd>. Specifying a nonzero value "
-"for I<nstype> is useful if the caller does not know what type of namespace "
-"is referred to by I<fd> and wants to ensure that the namespace is of a "
-"particular type. (The caller might not know the type of the namespace "
-"referred to by I<fd> if the file descriptor was opened by another process "
-"and, for example, passed to the caller via a UNIX domain socket.)"
+"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", right?
+#. This needs to be documented.
#. type: Plain text
-#: build/C/man2/setns.2:77
+#: build/C/man7/sched.7:289
msgid ""
-"On success, I<setns>() returns 0. On failure, -1 is returned and I<errno> "
-"is set to indicate the error."
+"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/man2/setns.2:82
-msgid "I<fd> is not a valid file descriptor."
+#: build/C/man7/sched.7:291
+msgid "The kernel requires that:"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:89
+#: 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 ""
-"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."
+"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/man2/setns.2:92
-msgid "Cannot allocate sufficient memory to change the specified namespace."
+#: 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/man2/setns.2:97
+#: build/C/man7/sched.7:319
msgid ""
-"The calling thread did not have the required privilege (B<CAP_SYS_ADMIN>) "
-"for this operation."
+"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/man2/setns.2:102
+#: build/C/man7/sched.7:325
msgid ""
-"The B<setns>() system call first appeared in Linux in kernel 3.0; library "
-"support was added to glibc in version 2.14."
+"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/man2/setns.2:106
-msgid "The B<setns>() system call is Linux-specific."
+#: 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/man2/setns.2:112
+#: build/C/man7/sched.7:344
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>()."
+"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/man2/setns.2:121
+#: build/C/man7/sched.7:356
msgid ""
-"The program below takes two or more arguments. The first argument specifies "
-"the pathname of a namespace file in an existing I</proc/[pid]/ns/> "
-"directory. The remaining arguments specify a command and its arguments. "
-"The program opens the namespace file, joins that namespace using B<setns>(), "
-"and executes the specified command inside that namespace."
+"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/man7/sched.7:356
+#, no-wrap
+msgid "SCHED_OTHER: Default Linux time-sharing scheduling"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:131
+#: build/C/man7/sched.7:373
msgid ""
-"The following shell session demonstrates the use of this program (compiled "
-"as a binary named I<ns_exec>) in conjunction with the B<CLONE_NEWUTS> "
-"example program in the B<clone>(2) man page (complied as a binary named "
-"I<newuts>)."
+"B<SCHED_OTHER> can be used at only static priority 0. B<SCHED_OTHER> is the "
+"standard Linux time-sharing scheduler that is intended for all threads that "
+"do not require the special real-time mechanisms. The thread to run is "
+"chosen from the static priority 0 list based on a I<dynamic> priority that "
+"is determined only inside this list. The dynamic priority is based on the "
+"nice value (set by B<nice>(2), B<setpriority>(2), or B<sched_setattr>(2)) "
+"and increased for each time quantum the thread is ready to run, but denied "
+"to run by the scheduler. This ensures fair progress among all "
+"B<SCHED_OTHER> threads."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:373
+#, no-wrap
+msgid "SCHED_BATCH: Scheduling batch processes"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:139
+#: build/C/man7/sched.7:385
msgid ""
-"We begin by executing the example program in B<clone>(2) in the "
-"background. That program creates a child in a separate UTS namespace. The "
-"child changes the hostname in its namespace, and then both processes display "
-"the hostnames in their UTS namespaces, so that we can see that they are "
-"different."
+"(Since Linux 2.6.16.) B<SCHED_BATCH> can be used only at static priority "
+"0. This policy is similar to B<SCHED_OTHER> in that it schedules the thread "
+"according to its dynamic priority (based on the nice value). The difference "
+"is that this policy will cause the scheduler to always assume that the "
+"thread is CPU-intensive. Consequently, the scheduler will apply a small "
+"scheduling penalty with respect to wakeup behaviour, so that this thread is "
+"mildly disfavored in scheduling decisions."
msgstr ""
+#. 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/setns.2:151
-#, no-wrap
+#: build/C/man7/sched.7:395
msgid ""
-"$ B<su> # Need privilege for namespace operations\n"
-"Password:\n"
-"# B<./newuts bizarro &>\n"
-"[1] 3549\n"
-"clone() returned 3550\n"
-"uts.nodename in child: bizarro\n"
-"uts.nodename in parent: antero\n"
-"# B<uname -n> # Verify hostname in the shell\n"
-"antero\n"
+"This policy is useful for workloads that are noninteractive, but do not want "
+"to lower their nice value, and for workloads that want a deterministic "
+"scheduling policy without interactivity causing extra preemptions (between "
+"the workload's tasks)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:395
+#, no-wrap
+msgid "SCHED_IDLE: Scheduling very low priority jobs"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:158
+#: build/C/man7/sched.7:399
msgid ""
-"We then run the program shown below, using it to execute a shell. Inside "
-"that shell, we verify that the hostname is the one set by the child created "
-"by the first program:"
+"(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/setns.2:164
+#: build/C/man7/sched.7:407
+msgid ""
+"This policy is intended for running jobs at extremely low priority (lower "
+"even than a +19 nice value with the B<SCHED_OTHER> or B<SCHED_BATCH> "
+"policies)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:407
#, no-wrap
+msgid "Resetting scheduling policy for child processes"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:413
msgid ""
-"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
-"# B<uname -n> # Executed in shell started by ns_exec\n"
-"bizarro\n"
+"Each thread has a reset-on-fork scheduling flag. When this flag is set, "
+"children created by B<fork>(2) do not inherit privileged scheduling "
+"policies. The reset-on-fork flag can be set by either:"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:174
-#, no-wrap
+#: build/C/man7/sched.7:422
msgid ""
-"#define _GNU_SOURCE\n"
-"#include E<lt>fcntl.hE<gt>\n"
-"#include E<lt>sched.hE<gt>\n"
-"#include E<lt>unistd.hE<gt>\n"
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
+"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/setns.2:182
-#, no-wrap
+#: build/C/man7/sched.7:429
msgid ""
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" int fd;\n"
+"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/setns.2:187
-#, no-wrap
+#: build/C/man7/sched.7:435
msgid ""
-" if (argc E<lt> 3) {\n"
-" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", "
-"argv[0]);\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+"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/man2/setns.2:191
-#, no-wrap
+#: build/C/man7/sched.7:442
msgid ""
-" fd = open(argv[1], O_RDONLY); /* Get descriptor for namespace */\n"
-" if (fd == -1)\n"
-" errExit(\"open\");\n"
+"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/man2/setns.2:194
-#, no-wrap
+#: build/C/man7/sched.7:445
msgid ""
-" if (setns(fd, 0) == -1) /* Join that namespace */\n"
-" errExit(\"setns\");\n"
+"More precisely, if the reset-on-fork flag is set, the following rules apply "
+"for subsequently created children:"
msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:198
-#, no-wrap
+#: build/C/man7/sched.7:453
msgid ""
-" execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
-" errExit(\"execvp\");\n"
-"}\n"
+"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/setns.2:205
-msgid "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
+#: build/C/man7/sched.7:456
+msgid ""
+"If the calling process has a negative nice value, the nice value is reset to "
+"zero in child processes."
msgstr ""
-#. type: TH
-#: build/C/man2/unshare.2:20
-#, no-wrap
-msgid "UNSHARE"
+#. type: Plain text
+#: build/C/man7/sched.7:464
+msgid ""
+"After the reset-on-fork flag has been enabled, it can be reset only if the "
+"thread has the B<CAP_SYS_NICE> capability. This flag is disabled in child "
+"processes created by B<fork>(2)."
msgstr ""
-#. type: TH
-#: build/C/man2/unshare.2:20
+#. type: SS
+#: build/C/man7/sched.7:464
#, no-wrap
-msgid "2013-04-17"
+msgid "Privileges and resource limits"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:23
-msgid "unshare - disassociate parts of the process execution context"
+#: build/C/man7/sched.7:476
+msgid ""
+"In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) threads "
+"can set a nonzero static priority (i.e., set a real-time scheduling "
+"policy). The only change that an unprivileged thread can make is to set the "
+"B<SCHED_OTHER> policy, and this can be done only if the effective user ID of "
+"the caller matches the real or effective user ID of the target thread (i.e., "
+"the thread specified by I<pid>) whose policy is being changed."
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:28
-#, no-wrap
-msgid "B<int unshare(int >I<flags>B<);>\n"
+#: build/C/man7/sched.7:482
+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/unshare.2:36
-msgid "B<unshare>():"
+#: build/C/man7/sched.7:492
+msgid ""
+"Since Linux 2.6.12, the B<RLIMIT_RTPRIO> resource limit defines a ceiling on "
+"an unprivileged thread's static priority for the B<SCHED_RR> and "
+"B<SCHED_FIFO> policies. The rules for changing scheduling policy and "
+"priority are as follows:"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:62
+#: build/C/man7/sched.7:500
msgid ""
-"B<unshare>() allows a process to disassociate parts of its execution "
-"context that are currently being shared with other processes. Part of the "
-"execution context, such as the mount namespace, is shared implicitly when a "
-"new process is created using B<fork>(2) or B<vfork>(2), while other parts, "
-"such as virtual memory, may be shared by explicit request when creating a "
-"process using B<clone>(2)."
+"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/unshare.2:67
+#: build/C/man7/sched.7:505
msgid ""
-"The main use of B<unshare>() is to allow a process to control its shared "
-"execution context without creating a new process."
+"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/unshare.2:74
+#: build/C/man7/sched.7:510
msgid ""
-"The I<flags> argument is a bit mask that specifies which parts of the "
-"execution context should be unshared. This argument is specified by ORing "
-"together zero or more of the following constants:"
+"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 ""
-#. type: TP
-#: build/C/man2/unshare.2:74
-#, no-wrap
-msgid "B<CLONE_FILES>"
+#. commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
+#. type: Plain text
+#: build/C/man7/sched.7:529
+msgid ""
+"Special rules apply for the B<SCHED_IDLE> policy. In Linux kernels before "
+"2.6.39, an unprivileged thread operating under this policy cannot change its "
+"policy, regardless of the value of its B<RLIMIT_RTPRIO> resource limit. In "
+"Linux kernels since 2.6.39, an unprivileged thread can switch to either the "
+"B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its nice value falls "
+"within the range permitted by its B<RLIMIT_NICE> resource limit (see "
+"B<getrlimit>(2))."
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:82
+#: build/C/man7/sched.7:540
msgid ""
-"Reverse the effect of the B<clone>(2) B<CLONE_FILES> flag. Unshare the "
-"file descriptor table, so that the calling process no longer shares its file "
-"descriptors with any other process."
+"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: TP
-#: build/C/man2/unshare.2:82
+#. type: SS
+#: build/C/man7/sched.7:540
#, no-wrap
-msgid "B<CLONE_FS>"
+msgid "Limiting the CPU usage of real-time and deadline processes"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:96
+#: build/C/man7/sched.7:553
msgid ""
-"Reverse the effect of the B<clone>(2) B<CLONE_FS> flag. Unshare filesystem "
-"attributes, so that the calling process no longer shares its root directory "
-"(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2)) "
-"attributes with any other process."
+"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/unshare.2:113
+#: build/C/man7/sched.7:563
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWIPC> flag. "
-"Unshare the System\\ V IPC namespace, so that the calling process has a "
-"private copy of the System\\ V IPC namespace which is not shared with any "
-"other process. Specifying this flag automatically implies B<CLONE_SYSVSEM> "
-"as well. Use of B<CLONE_NEWIPC> requires the B<CAP_SYS_ADMIN> capability."
+"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/unshare.2:128
+#: build/C/man7/sched.7:571
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
-"Unshare the network namespace, so that the calling process is moved into a "
-"new network namespace which is not shared with any previously existing "
-"process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
+"Since version 2.6.25, Linux also provides two I</proc> files that can be "
+"used to reserve a certain amount of CPU time to be used by non-real-time "
+"processes. Reserving some CPU time in this fashion allows some CPU time to "
+"be allocated to (say) a root shell that can be used to kill a runaway "
+"process. Both of these files specify time values in microseconds:"
msgstr ""
#. type: TP
-#: build/C/man2/unshare.2:128
+#: build/C/man7/sched.7:571
#, no-wrap
-msgid "B<CLONE_NEWNS>"
+msgid "I</proc/sys/kernel/sched_rt_period_us>"
msgstr ""
-#. These flag name are inconsistent:
-#. CLONE_NEWNS does the same thing in clone(), but CLONE_VM,
-#. CLONE_FS, and CLONE_FILES reverse the action of the clone()
-#. flags of the same name.
#. type: Plain text
-#: build/C/man2/unshare.2:149
+#: build/C/man7/sched.7:579
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
-"Unshare the mount namespace, so that the calling process has a private copy "
-"of its namespace which is not shared with any other process. Specifying "
-"this flag automatically implies B<CLONE_FS> as well. Use of B<CLONE_NEWNS> "
-"requires the B<CAP_SYS_ADMIN> capability."
+"This file specifies a scheduling period that is equivalent to 100% CPU "
+"bandwidth. The value in this file can range from 1 to B<INT_MAX>, giving an "
+"operating range of 1 microsecond to around 35 minutes. The default value in "
+"this file is 1,000,000 (1 second)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:579
+#, no-wrap
+msgid "I</proc/sys/kernel/sched_rt_runtime_us>"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:163
+#: build/C/man7/sched.7:592
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWUTS> flag. "
-"Unshare the UTS IPC namespace, so that the calling process has a private "
-"copy of the UTS namespace which is not shared with any other process. Use "
-"of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
+"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: TP
-#: build/C/man2/unshare.2:163
+#. type: SS
+#: build/C/man7/sched.7:593
#, no-wrap
-msgid "B<CLONE_SYSVSEM> (since Linux 2.6.26)"
+msgid "Response time"
msgstr ""
-#. commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7
-#. As at 2.6.16, the following forced implications also apply,
-#. although the relevant flags are not yet implemented.
-#. If CLONE_THREAD is set force CLONE_VM.
-#. If CLONE_VM is set, force CLONE_SIGHAND.
-#. CLONE_NEWNSIf CLONE_SIGHAND is set and signals are also being shared
-#. (i.e., current->signal->count > 1), force CLONE_THREAD.
-#
-#. FIXME . CLONE_VM is not (yet, as at 2.6.16) implemented.
-#. .TP
-#. .B CLONE_VM
-#. Reverse the effect of the
-#. .BR clone (2)
-#. .B CLONE_VM
-#. flag.
-#. .RB ( CLONE_VM
-#. is also implicitly set by
-#. .BR vfork (2),
-#. and can be reversed using this
-#. .BR unshare ()
-#. flag.)
-#. Unshare virtual memory, so that the calling process no
-#. longer shares its virtual address space with any other process.
+#. as described in
+#. .BR request_irq (9).
#. type: Plain text
-#: build/C/man2/unshare.2:200
+#: build/C/man7/sched.7:601
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."
+"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: SS
+#: build/C/man7/sched.7:601
+#, no-wrap
+msgid "Miscellaneous"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:207
+#: build/C/man7/sched.7:606
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."
+"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/man2/unshare.2:212
+#: build/C/man7/sched.7:612
msgid ""
-"On success, zero returned. On failure, -1 is returned and I<errno> is set "
-"to indicate the error."
+"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/unshare.2:217
-msgid "An invalid bit was specified in I<flags>."
+#: build/C/man7/sched.7:623
+msgid ""
+"Originally, Standard Linux was intended as a general-purpose operating "
+"system being able to handle background processes, interactive applications, "
+"and less demanding real-time applications (applications that need to usually "
+"meet timing deadlines). Although the Linux kernel 2.6 allowed for kernel "
+"preemption and the newly introduced O(1) scheduler ensures that the time "
+"needed to schedule is fixed and deterministic irrespective of the number of "
+"active tasks, true real-time computing was not possible up to kernel version "
+"2.6.17."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:623
+#, no-wrap
+msgid "Real-time features in the mainline Linux kernel"
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/unshare.2:221
+#: build/C/man7/sched.7:637
msgid ""
-"Cannot allocate sufficient memory to copy parts of caller's context that "
-"need to be unshared."
+"From kernel version 2.6.18 onward, however, Linux is gradually becoming "
+"equipped with real-time capabilities, most of which are derived from the "
+"former I<realtime-preempt> patches developed by Ingo Molnar, Thomas "
+"Gleixner, Steven Rostedt, and others. Until the patches have been "
+"completely merged into the mainline kernel (this is expected to be around "
+"kernel version 2.6.30), they must be installed to achieve the best real-time "
+"performance. These patches are named:"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:224
-msgid "The calling process did not have the required privileges for this operation."
+#: build/C/man7/sched.7:641
+#, no-wrap
+msgid "patch-I<kernelversion>-rtI<patchversion>\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:228
-msgid "The B<unshare>() system call was added to Linux in kernel 2.6.16."
+#: build/C/man7/sched.7:647
+msgid ""
+"and can be downloaded from E<.UR "
+"http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/projects\\:/rt/> E<.UE .>"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:232
-msgid "The B<unshare>() system call is Linux-specific."
+#: build/C/man7/sched.7:656
+msgid ""
+"Without the patches and prior to their full inclusion into the mainline "
+"kernel, the kernel configuration offers only the three preemption classes "
+"B<CONFIG_PREEMPT_NONE>, B<CONFIG_PREEMPT_VOLUNTARY>, and "
+"B<CONFIG_PREEMPT_DESKTOP> which respectively provide no, some, and "
+"considerable reduction of the worst-case scheduling latency."
msgstr ""
-#. FIXME all of the following needs to be reviewed for the current kernel
-#. However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND
-#. was not specified when doing clone(); i.e., unsharing
-#. signal handlers is permitted if we are not actually
-#. sharing signal handlers. mtk
-#. However, we can do unshare(CLONE_VM) if CLONE_VM
-#. was not specified when doing clone(); i.e., unsharing
-#. virtual memory is permitted if we are not actually
-#. sharing virtual memory. mtk
-#
-#. 9) Future Work
-#. --------------
-#. The current implementation of unshare does not allow unsharing of
-#. signals and signal handlers. Signals are complex to begin with and
-#. to unshare signals and/or signal handlers of a currently running
-#. process is even more complex. If in the future there is a specific
-#. need to allow unsharing of signals and/or signal handlers, it can
-#. be incrementally added to unshare without affecting legacy
-#. applications using unshare.
#. type: Plain text
-#: build/C/man2/unshare.2:266
+#: build/C/man7/sched.7:665
msgid ""
-"Not all of the process attributes that can be shared when a new process is "
-"created using B<clone>(2) can be unshared using B<unshare>(). In "
-"particular, as at kernel 3.8, B<unshare>() does not implement flags that "
-"reverse the effects of B<CLONE_SIGHAND>, B<CLONE_THREAD>, or B<CLONE_VM>. "
-"Such functionality may be added in the future, if required."
+"With the patches applied or after their full inclusion into the mainline "
+"kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
+"available. If this is selected, Linux is transformed into a regular "
+"real-time operating system. The FIFO and RR scheduling policies are then "
+"used to run a thread with true real-time priority and a minimum worst-case "
+"scheduling latency."
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:272
-msgid "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
+#: build/C/man7/sched.7:691
+msgid ""
+"B<chrt>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), B<munlock>(2), "
+"B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
+"B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
+"B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
+"B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
+"B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
+"B<cpuset>(7)"
msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:275
-msgid "I<Documentation/unshare.txt> in the Linux kernel source tree"
+#: build/C/man7/sched.7:695
+msgid ""
+"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
+"& Associates, Inc., ISBN 1-56592-074-0."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:702
+msgid ""
+"The Linux kernel source files I<Documentation/scheduler/sched-deadline.txt>, "
+"I<Documentation/scheduler/sched-rt-group.txt>, "
+"I<Documentation/scheduler/sched-design-CFS.txt>, and "
+"I<Documentation/scheduler/sched-nice-design.txt>"
msgstr ""
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-06-03 01:29+0900\n"
-"PO-Revision-Date: 2014-06-08 00:23+0900\n"
+"POT-Creation-Date: 2014-06-08 01:16+0900\n"
+"PO-Revision-Date: 2014-06-08 01:19+0900\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"it was determined that all port numbers in the ephemeral port range are "
"currently in use. See the discussion of I</proc/sys/net/ipv4/"
"ip_local_port_range> B<ip>(7)."
-msgstr "(インターネットドメインソケットの場合) ソケットアドレス構造体でポート番号に 0 が指定されたが、 一時ポート (ephemeral port) を割り当てようとした際に、 一時ポートとして使用する範囲のすべてのポート番号が使用中であった。 B<ip>(7) の I</proc/sys/net/ipv4/ip_local_port_range> の説明を参照。"
+msgstr ""
+"(インターネットドメインソケットの場合) ソケットアドレス構造体でポート番号に "
+"0 が指定されたが、 一時ポート (ephemeral port) を割り当てようとした際に、 一"
+"時ポートとして使用する範囲のすべてのポート番号が使用中であった。 B<ip>(7) の "
+"I</proc/sys/net/ipv4/ip_local_port_range> の説明を参照。"
#. type: Plain text
#: build/C/man2/bind.2:180
"ephemeral port, it was determined that all port numbers in the ephemeral "
"port range are currently in use. See the discussion of I</proc/sys/net/ipv4/"
"ip_local_port_range> in B<ip>(7)."
-msgstr "(インターネットドメインソケットの場合) I<sockfd> が参照するソケットがそれ以前にアドレスにバインドされておらず、 そのソケットに一時ポートをバインドしようとした際に、 一時ポートとして使用する範囲のポート番号がすべて使用中であった。 B<ip>(7) の I</proc/sys/net/ipv4/ip_local_port_range> の議論を参照のこと。"
+msgstr ""
+"(インターネットドメインソケットの場合) I<sockfd> が参照するソケットがそれ以前"
+"にアドレスにバインドされておらず、 そのソケットに一時ポートをバインドしようと"
+"した際に、 一時ポートとして使用する範囲のポート番号がすべて使用中であった。 "
+"B<ip>(7) の I</proc/sys/net/ipv4/ip_local_port_range> の議論を参照のこと。"
#. type: TP
#: build/C/man2/connect.2:164 build/C/man2/socket.2:320
msgid ""
"B<ioctl>(2), B<socket>(2), B<getprotoent>(3), B<protocols>(5), B<ip>(7), "
"B<packet>(7), B<socket>(7), B<tcp>(7), B<udp>(7), B<unix>(7)"
-msgstr "B<ioctl>(2), B<socket>(2), B<getprotoent>(3), B<protocols>(5), B<ip>(7), B<packet>(7), B<socket>(7), B<tcp>(7), B<udp>(7), B<unix>(7)"
+msgstr ""
+"B<ioctl>(2), B<socket>(2), B<getprotoent>(3), B<protocols>(5), B<ip>(7), "
+"B<packet>(7), B<socket>(7), B<tcp>(7), B<udp>(7), B<unix>(7)"
#. type: TH
#: build/C/man3/if_nameindex.3:26
"The I<msg_name> field points to a caller-allocated buffer that is used to "
"return the source address if the socket is unconnected. The caller should "
"set I<msg_namelen> to the size of this buffer before this call; upon return "
-"from a successful call, I<msg_name> will contain the length of the returned "
-"address. If the application does not need to know the source address, "
-"I<msg_name> can be specified as NULL."
-msgstr "フィールド I<msg_name> は、 ソケットが接続されていない場合に送信元アドレスを返すのに使用されるバッファを指す。 このバッファは呼び出し元が確保する。 呼び出し元は呼び出し前に I<msg_namelen> にこのバッファの大きさを設定しなければならない。 呼び出しが成功した場合、呼び出しから返って来た際には I<msg_namelen> には返されるアドレスの長さが入っている。 アプリケーションが送信元アドレスを知る必要がない場合には、 I<msg_name> に NULL を指定することができる。"
+"from a successful call, I<msg_namelen> will contain the length of the "
+"returned address. If the application does not need to know the source "
+"address, I<msg_name> can be specified as NULL."
+msgstr ""
+"フィールド I<msg_name> は、 ソケットが接続されていない場合に送信元アドレスを"
+"返すのに使用されるバッファを指す。 このバッファは呼び出し元が確保する。 呼び"
+"出し元は呼び出し前に I<msg_namelen> にこのバッファの大きさを設定しなければな"
+"らない。 呼び出しが成功した場合、呼び出しから返って来た際には I<msg_namelen> "
+"には返されるアドレスの長さが入っている。 アプリケーションが送信元アドレスを知"
+"る必要がない場合には、 I<msg_name> に NULL を指定することができる。"
#. type: Plain text
#: build/C/man2/recv.2:345
msgid ""
"The fields I<msg_iov> and I<msg_iovlen> describe scatter-gather locations, "
"as discussed in B<readv>(2)."
-msgstr "I<msg_iov> と I<msg_iovlen> フィールドは scatter-gather 用の場所を指定する。 B<readv>(2) に説明がある。"
+msgstr ""
+"I<msg_iov> と I<msg_iovlen> フィールドは scatter-gather 用の場所を指定する。 "
+"B<readv>(2) に説明がある。"
#. type: Plain text
#: build/C/man2/recv.2:360
"contain the length of the available buffer in I<msg_control>; upon return "
"from a successful call it will contain the length of the control message "
"sequence."
-msgstr "I<msg_control> フィールドは I<msg_controllen> の長さを持ち、他のプロトコル制御メッセージや 種々の補助データのためのバッファへのポインタである。 B<recvmsg>() を呼ぶ際には、 I<msg_controllen> に I<msg_control> のバッファの長さを入れておく必要がある。 コールが成功して返った場合、制御メッセージ列の長さが入っている。"
+msgstr ""
+"I<msg_control> フィールドは I<msg_controllen> の長さを持ち、他のプロトコル制"
+"御メッセージや 種々の補助データのためのバッファへのポインタである。 "
+"B<recvmsg>() を呼ぶ際には、 I<msg_controllen> に I<msg_control> のバッファの"
+"長さを入れておく必要がある。 コールが成功して返った場合、制御メッセージ列の長"
+"さが入っている。"
#. type: Plain text
#: build/C/man2/recv.2:362
"the system clock granularity, and kernel scheduling delays mean that the "
"blocking interval may overrun by a small amount.) If I<timeout> is NULL, "
"then the operation blocks indefinitely."
-msgstr "I<timeout> 引き数は I<struct timespec> (B<clock_gettime>(2) 参照) へのポインタで、 この構造体で受信操作のタイムアウト (秒とナノ秒) を指定する (I<ただし、バグを参照のこと>) (待ち時間はシステムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延により少しだけ長くなる可能性がある)。 I<timeout>が NULL の場合、 受信操作は無期限に停止 (block) する。"
+msgstr ""
+"I<timeout> 引き数は I<struct timespec> (B<clock_gettime>(2) 参照) へのポイン"
+"タで、 この構造体で受信操作のタイムアウト (秒とナノ秒) を指定する (I<ただし、"
+"バグを参照のこと>) (待ち時間はシステムクロックの粒度に切り上げられ、カーネル"
+"のスケジューリング遅延により少しだけ長くなる可能性がある)。 I<timeout>が "
+"NULL の場合、 受信操作は無期限に停止 (block) する。"
#. type: Plain text
#: build/C/man2/recvmmsg.2:133
"only after the receipt of each datagram, so that if up to I<vlen-1> "
"datagrams are received before the timeout expires, but then no further "
"datagrams are received, the call will block forever."
-msgstr "I<timeout> 引き数は意図した通りには動作しない。 タイムアウトは各データグラムの受信後にのみチェックされる。 そのため、 タイムアウトが満了する前に I<vlen-1> 個のデータグラムを受信し、 その後全くデータグラムを受信しなかった場合、 呼び出しはずっと停止し続けてしまう。"
+msgstr ""
+"I<timeout> 引き数は意図した通りには動作しない。 タイムアウトは各データグラム"
+"の受信後にのみチェックされる。 そのため、 タイムアウトが満了する前に "
+"I<vlen-1> 個のデータグラムを受信し、 その後全くデータグラムを受信しなかった場"
+"合、 呼び出しはずっと停止し続けてしまう。"
#. type: Plain text
#: build/C/man2/recvmmsg.2:285
"clones of the BSD socket layer (including System\\ V variants). However, "
"note that the System\\ V variant typically sets the timeout variable before "
"exit, but the BSD variant does not."
-msgstr "B<select>() は POSIX.1-2001 と 4.4BSD (B<select>() は 4.2BSD で最初に登場した) に準拠する。 BSD ソケット層のクローンをサポートしている非 BSD システム (System\\ V 系も含む) との間でだいたい移植性がある。しかし System\\ V 系では たいがい timeout 変数を exit の前にセットするが、 BSD 系ではそうでないので注意すること。"
+msgstr ""
+"B<select>() は POSIX.1-2001 と 4.4BSD (B<select>() は 4.2BSD で最初に登場し"
+"た) に準拠する。 BSD ソケット層のクローンをサポートしている非 BSD システム "
+"(System\\ V 系も含む) との間でだいたい移植性がある。しかし System\\ V 系では "
+"たいがい timeout 変数を exit の前にセットするが、 BSD 系ではそうでないので注"
+"意すること。"
#. type: Plain text
#: build/C/man2/select.2:357
msgid ""
"The I<msg_name> field is used on an unconnected socket to specify the target "
"address for a datagram. It points to a buffer containing the address; the "
-"I<msg_name> field should be set to the size of the address. For a connected "
-"socket, these fields should be specified as NULL and 0, respectively."
-msgstr "フィールド I<msg_name> は、 未接続のソケットでデータグラムの宛先アドレスを指定するのに使用される。 このフィールドはアドレスを格納したバッファを指す。 I<msg_namelen> フィールドにはアドレスの大きさを設定しなければならない。 接続済のソケットについては、これらのフィールドにはそれぞれ NULL と 0 を指定しなければならない。"
+"I<msg_namelen> field should be set to the size of the address. For a "
+"connected socket, these fields should be specified as NULL and 0, "
+"respectively."
+msgstr "フィールド I<msg_name> は、 未接続のソケットでデータグラムの宛先アドレスを指定するのに使用される。 このフィールドはアドレスを格納したバッファを指す。 フィールド I<msg_namelen> にはアドレスの大きさを設定しなければならない。 接続済のソケットについては、これらのフィールドにはそれぞれ NULL と 0 を指定しなければならない。"
#. type: Plain text
#: build/C/man2/send.2:276
msgid ""
"The I<msg_iov> and I<msg_iovlen> fields specify scatter-gather locations, as "
"for B<writev>(2)."
-msgstr "フィールド B<msg_iov> と I<msg_iovlen> は scatter-gather 用の場所を指定する。 B<writev>(2) と同じ。"
+msgstr ""
+"フィールド B<msg_iov> と I<msg_iovlen> は scatter-gather 用の場所を指定す"
+"る。 B<writev>(2) と同じ。"
#. type: Plain text
#: build/C/man2/send.2:287
"I<msg_controllen> members. The maximum control buffer length the kernel can "
"process is limited per socket by the value in I</proc/sys/net/core/"
"optmem_max>; see B<socket>(7)."
-msgstr "フィールド I<msg_control> と I<msg_controllen> を使用して制御情報を送信することができる。 カーネルが処理できる制御バッファのソケットあたりの最大長は、 I</proc/sys/net/core/optmem_max> の値に制限されている。 B<socket>(7) を参照。"
+msgstr ""
+"フィールド I<msg_control> と I<msg_controllen> を使用して制御情報を送信するこ"
+"とができる。 カーネルが処理できる制御バッファのソケットあたりの最大長は、 I</"
+"proc/sys/net/core/optmem_max> の値に制限されている。 B<socket>(7) を参照。"
#. Still to be documented:
#. Send file descriptors and user credentials using the
"an ephemeral port, it was determined that all port numbers in the ephemeral "
"port range are currently in use. See the discussion of I</proc/sys/net/ipv4/"
"ip_local_port_range> in B<ip>(7)."
-msgstr "(インターネットドメインデータグラムソケットの場合) I<sockfd> が参照するソケットがそれ以前にアドレスにバインドされておらず、 そのソケットに一時ポートをバインドしようとした際に、 一時ポートとして使用する範囲のポート番号がすべて使用中であった。 B<ip>(7) の I</proc/sys/net/ipv4/ip_local_port_range> の議論を参照のこと。"
+msgstr ""
+"(インターネットドメインデータグラムソケットの場合) I<sockfd> が参照するソケッ"
+"トがそれ以前にアドレスにバインドされておらず、 そのソケットに一時ポートをバイ"
+"ンドしようとした際に、 一時ポートとして使用する範囲のポート番号がすべて使用中"
+"であった。 B<ip>(7) の I</proc/sys/net/ipv4/ip_local_port_range> の議論を参照"
+"のこと。"
#. type: Plain text
#: build/C/man2/send.2:339
"B<socket>() appeared in 4.2BSD. It is generally portable to/from non-BSD "
"systems supporting clones of the BSD socket layer (including System\\ V "
"variants)."
-msgstr "B<socket>() は 4.2BSD で登場した。一般に、(System\\ V の変種を含めて) BSD のソケット層の互換性をサポートしている BSD 以外のシステムへの、 または、BSD 以外のシステムからの移植ができる。"
+msgstr ""
+"B<socket>() は 4.2BSD で登場した。一般に、(System\\ V の変種を含めて) BSD "
+"のソケット層の互換性をサポートしている BSD 以外のシステムへの、 または、BSD "
+"以外のシステムからの移植ができる。"
#. type: Plain text
#: build/C/man2/socket.2:381
"4.4BSD, POSIX.1-2001. The B<socketpair>() function call appeared in "
"4.2BSD. It is generally portable to/from non-BSD systems supporting clones "
"of the BSD socket layer (including System\\ V variants)."
-msgstr "4.4BSD, POSIX.1-2001. B<socketpair>() 関数コールは 4.2BSD で現われた。一般に (System\\ V の変種を含めて) BSD のソケット層のクローンをサポートしている、BSD 以外のシステムと、 互いに移植性がある。"
+msgstr ""
+"4.4BSD, POSIX.1-2001. B<socketpair>() 関数コールは 4.2BSD で現われた。一般"
+"に (System\\ V の変種を含めて) BSD のソケット層のクローンをサポートしてい"
+"る、BSD 以外のシステムと、 互いに移植性がある。"
#. type: Plain text
#: build/C/man2/socketpair.2:109
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-06-03 01:29+0900\n"
+"POT-Creation-Date: 2014-06-08 01:16+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"
"The I<msg_name> field points to a caller-allocated buffer that is used to "
"return the source address if the socket is unconnected. The caller should "
"set I<msg_namelen> to the size of this buffer before this call; upon return "
-"from a successful call, I<msg_name> will contain the length of the returned "
-"address. If the application does not need to know the source address, "
-"I<msg_name> can be specified as NULL."
+"from a successful call, I<msg_namelen> will contain the length of the "
+"returned address. If the application does not need to know the source "
+"address, I<msg_name> can be specified as NULL."
msgstr ""
#. type: Plain text
msgid ""
"The I<msg_name> field is used on an unconnected socket to specify the target "
"address for a datagram. It points to a buffer containing the address; the "
-"I<msg_name> field should be set to the size of the address. For a connected "
-"socket, these fields should be specified as NULL and 0, respectively."
+"I<msg_namelen> field should be set to the size of the address. For a "
+"connected socket, these fields should be specified as NULL and 0, "
+"respectively."
msgstr ""
#. type: Plain text
+# pagename,#complete,#remaining,#all
+fanotify_init.2,18,56,74
+fanotify_mark.2,28,72,100
+fanotify.7,20,167,187
# pagename,#complete,#remaining,#all
+sched_setattr.2,33,58,91
sched_setscheduler.2,52,6,58
+sched.7,62,71,133
<TR><TH>page name</TH><TH>remaining</TH><TH>comp. %</TH></TR>
<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>filesystem</B></TD></TR>
<TR class="over70"><TD>spufs.7</TD><TD>41/159</TD><TD>74.21</TD></TR>
+<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>inotify</B></TD></TR>
+<TR><TD>fanotify_init.2</TD><TD>56/74</TD><TD>24.32</TD></TR>
+<TR><TD>fanotify_mark.2</TD><TD>72/100</TD><TD>28.00</TD></TR>
+<TR><TD>fanotify.7</TD><TD>167/187</TD><TD>10.70</TD></TR>
<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>intro</B></TD></TR>
<TR class="over80"><TD>proc.5</TD><TD>64/998</TD><TD>93.59</TD></TR>
<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>keyutils</B></TD></TR>
<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>process</B></TD></TR>
<TR><TD>cpuset.7</TD><TD>212/314</TD><TD>32.48</TD></TR>
<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>sched</B></TD></TR>
+<TR><TD>sched_setattr.2</TD><TD>58/91</TD><TD>36.26</TD></TR>
<TR class="over80"><TD>sched_setscheduler.2</TD><TD>6/58</TD><TD>89.66</TD></TR>
+<TR><TD>sched.7</TD><TD>71/133</TD><TD>46.62</TD></TR>
<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>semaphore</B></TD></TR>
<TR class="over80"><TD>semget.2</TD><TD>7/62</TD><TD>88.71</TD></TR>
<TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>signal</B></TD></TR>
<TR class="over70"><TD>futimesat.2</TD><TD>10/37</TD><TD>72.97</TD></TR>
<TR><TD>utimensat.2</TD><TD>49/107</TD><TD>54.21</TD></TR>
<TR class="over80"><TD>zdump.8</TD><TD>1/22</TD><TD>95.45</TD></TR>
-<TR><TD COLSPAN=3>Total 66 pages</TD></TR>
+<TR><TD COLSPAN=3>Total 71 pages</TD></TR>
</TABLE>
</BODY></HTML>