msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2012-03-22 04:25+0900\n"
+"POT-Creation-Date: 2013-03-22 01:05+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"
#. type: TH
#: build/C/man7/epoll.7:21
#, no-wrap
-msgid "2009-02-01"
+msgid "2012-04-17"
msgstr ""
#. type: TH
-#: build/C/man7/epoll.7:21 build/C/man2/epoll_create.2:25 build/C/man2/epoll_ctl.2:21 build/C/man2/epoll_wait.2:23 build/C/man2/poll.2:31
+#: build/C/man7/epoll.7:21 build/C/man2/epoll_create.2:24 build/C/man2/epoll_ctl.2:20 build/C/man2/epoll_wait.2:22 build/C/man2/poll.2:31
#, no-wrap
msgid "Linux"
msgstr ""
#. type: TH
-#: build/C/man7/epoll.7:21 build/C/man2/epoll_create.2:25 build/C/man2/epoll_ctl.2:21 build/C/man2/epoll_wait.2:23 build/C/man2/poll.2:31
+#: build/C/man7/epoll.7:21 build/C/man2/epoll_create.2:24 build/C/man2/epoll_ctl.2:20 build/C/man2/epoll_wait.2:22 build/C/man2/poll.2:31
#, no-wrap
msgid "Linux Programmer's Manual"
msgstr ""
#. type: SH
-#: build/C/man7/epoll.7:22 build/C/man2/epoll_create.2:26 build/C/man2/epoll_ctl.2:22 build/C/man2/epoll_wait.2:24 build/C/man2/poll.2:32
+#: build/C/man7/epoll.7:22 build/C/man2/epoll_create.2:25 build/C/man2/epoll_ctl.2:21 build/C/man2/epoll_wait.2:23 build/C/man2/poll.2:32
#, no-wrap
msgid "NAME"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man7/epoll.7:24 build/C/man2/epoll_create.2:28 build/C/man2/epoll_ctl.2:24 build/C/man2/epoll_wait.2:26 build/C/man2/poll.2:34
+#: build/C/man7/epoll.7:24 build/C/man2/epoll_create.2:27 build/C/man2/epoll_ctl.2:23 build/C/man2/epoll_wait.2:25 build/C/man2/poll.2:34
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:26 build/C/man2/epoll_ctl.2:26
+#: build/C/man7/epoll.7:26 build/C/man2/epoll_ctl.2:25
msgid "B<#include E<lt>sys/epoll.hE<gt>>"
msgstr ""
#. type: SH
-#: build/C/man7/epoll.7:26 build/C/man2/epoll_create.2:35 build/C/man2/epoll_ctl.2:29 build/C/man2/epoll_wait.2:36 build/C/man2/poll.2:46
+#: build/C/man7/epoll.7:26 build/C/man2/epoll_create.2:34 build/C/man2/epoll_ctl.2:28 build/C/man2/epoll_wait.2:35 build/C/man2/poll.2:46
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:36
+#: build/C/man7/epoll.7:40
msgid ""
-"B<epoll> is a variant of B<poll>(2) that can be used either as an "
-"edge-triggered or a level-triggered interface and scales well to large "
-"numbers of watched file descriptors. The following system calls are "
-"provided to create and manage an B<epoll> instance:"
+"The B<epoll> API performs a similar task to B<poll>(2): monitoring multiple "
+"file descriptors to see if I/O is possible on any of them. The B<epoll> API "
+"can be used either as an edge-triggered or a level-triggered interface and "
+"scales well to large numbers of watched file descriptors. The following "
+"system calls are provided to create and manage an B<epoll> instance:"
msgstr ""
#. type: IP
-#: build/C/man7/epoll.7:36 build/C/man7/epoll.7:46 build/C/man7/epoll.7:54
+#: build/C/man7/epoll.7:40 build/C/man7/epoll.7:49 build/C/man7/epoll.7:57
#, no-wrap
msgid "*"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:46
+#: build/C/man7/epoll.7:49
msgid ""
-"An B<epoll> instance created by B<epoll_create>(2), which returns a file "
-"descriptor referring to the epoll instance. (The more recent "
-"B<epoll_create1>(2) extends the functionality of B<epoll_create>(2).)"
+"B<epoll_create>(2) creates an B<epoll> instance and returns a file "
+"descriptor referring to that instance. (The more recent B<epoll_create1>(2) "
+"extends the functionality of B<epoll_create>(2).)"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:54
+#: build/C/man7/epoll.7:57
msgid ""
"Interest in particular file descriptors is then registered via "
"B<epoll_ctl>(2). The set of file descriptors currently registered on an "
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:57
-msgid "Finally, the actual wait is started by B<epoll_wait>(2)."
+#: build/C/man7/epoll.7:61
+msgid ""
+"B<epoll_wait>(2) waits for I/O events, blocking the calling thread if no "
+"events are currently available."
msgstr ""
#. type: SS
-#: build/C/man7/epoll.7:57
+#: build/C/man7/epoll.7:61
#, no-wrap
-msgid "Level-Triggered and Edge-Triggered"
+msgid "Level-triggered and edge-triggered"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:66
+#: build/C/man7/epoll.7:70
msgid ""
"The B<epoll> event distribution interface is able to behave both as "
"edge-triggered (ET) and as level-triggered (LT). The difference between the "
msgstr ""
#. type: IP
-#: build/C/man7/epoll.7:66
+#: build/C/man7/epoll.7:70
#, no-wrap
msgid "1."
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:72
+#: build/C/man7/epoll.7:76
msgid ""
"The file descriptor that represents the read side of a pipe (I<rfd>) is "
"registered on the B<epoll> instance."
msgstr ""
#. type: IP
-#: build/C/man7/epoll.7:72
+#: build/C/man7/epoll.7:76
#, no-wrap
msgid "2."
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:74
+#: build/C/man7/epoll.7:78
msgid "A pipe writer writes 2 kB of data on the write side of the pipe."
msgstr ""
#. type: IP
-#: build/C/man7/epoll.7:74
+#: build/C/man7/epoll.7:78
#, no-wrap
msgid "3."
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:80
+#: build/C/man7/epoll.7:84
msgid ""
"A call to B<epoll_wait>(2) is done that will return I<rfd> as a ready file "
"descriptor."
msgstr ""
#. type: IP
-#: build/C/man7/epoll.7:80
+#: build/C/man7/epoll.7:84
#, no-wrap
msgid "4."
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:83
+#: build/C/man7/epoll.7:87
msgid "The pipe reader reads 1 kB of data from I<rfd>."
msgstr ""
#. type: IP
-#: build/C/man7/epoll.7:83
+#: build/C/man7/epoll.7:87
#, no-wrap
msgid "5."
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:87
+#: build/C/man7/epoll.7:91
msgid "A call to B<epoll_wait>(2) is done."
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:122
+#: build/C/man7/epoll.7:126
msgid ""
"If the I<rfd> file descriptor has been added to the B<epoll> interface using "
"the B<EPOLLET> (edge-triggered) flag, the call to B<epoll_wait>(2) done in "
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:132
+#: build/C/man7/epoll.7:136
msgid ""
"An application that employs the B<EPOLLET> flag should use nonblocking file "
"descriptors to avoid having a blocking read or write starve a task that is "
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:133
+#: build/C/man7/epoll.7:137
#, no-wrap
msgid "B<i>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:136
+#: build/C/man7/epoll.7:140
msgid "with nonblocking file descriptors; and"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:136
+#: build/C/man7/epoll.7:140
#, no-wrap
msgid "B<ii>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:144
+#: build/C/man7/epoll.7:148
msgid ""
"by waiting for an event only after B<read>(2) or B<write>(2) return "
"B<EAGAIN>."
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:155
+#: build/C/man7/epoll.7:159
msgid ""
"By contrast, when used as a level-triggered interface (the default, when "
"B<EPOLLET> is not specified), B<epoll> is simply a faster B<poll>(2), and "
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:172
+#: build/C/man7/epoll.7:176
msgid ""
"Since even with edge-triggered B<epoll>, multiple events can be generated "
"upon receipt of multiple chunks of data, the caller has the option to "
msgstr ""
#. type: SS
-#: build/C/man7/epoll.7:172
+#: build/C/man7/epoll.7:176
#, no-wrap
msgid "/proc interfaces"
msgstr ""
#. This specifies an upper limit on the number of epoll instances
#. that can be created per real user ID.
#. type: Plain text
-#: build/C/man7/epoll.7:180
+#: build/C/man7/epoll.7:184
msgid ""
"The following interfaces can be used to limit the amount of kernel memory "
"consumed by epoll:"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:180
+#: build/C/man7/epoll.7:184
#, no-wrap
msgid "I</proc/sys/fs/epoll/max_user_watches> (since Linux 2.6.28)"
msgstr ""
#. 2.6.29 (in 2.6.28, the default was 1/32 of lowmem)
#. type: Plain text
-#: build/C/man7/epoll.7:194
+#: build/C/man7/epoll.7:198
msgid ""
"This specifies a limit on the total number of file descriptors that a user "
"can register across all epoll instances on the system. The limit is per "
msgstr ""
#. type: SS
-#: build/C/man7/epoll.7:194
+#: build/C/man7/epoll.7:198
#, no-wrap
-msgid "Example for Suggested Usage"
+msgid "Example for suggested usage"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:223
+#: build/C/man7/epoll.7:227
msgid ""
"While the usage of B<epoll> when employed as a level-triggered interface "
"does have the same semantics as B<poll>(2), the edge-triggered usage "
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:229
+#: build/C/man7/epoll.7:233
#, no-wrap
msgid ""
"#define MAX_EVENTS 10\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:232
+#: build/C/man7/epoll.7:236
#, no-wrap
msgid ""
"/* Set up listening socket, \\(aqlisten_sock\\(aq (socket(),\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:238
+#: build/C/man7/epoll.7:242
#, no-wrap
msgid ""
"epollfd = epoll_create(10);\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:245
+#: build/C/man7/epoll.7:249
#, no-wrap
msgid ""
"ev.events = EPOLLIN;\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:252
+#: build/C/man7/epoll.7:256
#, no-wrap
msgid ""
"for (;;) {\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:274
+#: build/C/man7/epoll.7:278
#, no-wrap
msgid ""
" for (n = 0; n E<lt> nfds; ++n) {\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:293
+#: build/C/man7/epoll.7:297
msgid ""
"When used as an edge-triggered interface, for performance reasons, it is "
"possible to add the file descriptor inside the B<epoll> interface "
msgstr ""
#. type: SS
-#: build/C/man7/epoll.7:293
+#: build/C/man7/epoll.7:297
#, no-wrap
-msgid "Questions and Answers"
+msgid "Questions and answers"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:294
+#: build/C/man7/epoll.7:298
#, no-wrap
msgid "B<Q0>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:299
+#: build/C/man7/epoll.7:303
msgid ""
"What is the key used to distinguish the file descriptors registered in an "
"B<epoll> set?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:299
+#: build/C/man7/epoll.7:303
#, no-wrap
msgid "B<A0>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:305
+#: build/C/man7/epoll.7:309
msgid ""
"The key is the combination of the file descriptor number and the open file "
"description (also known as an \"open file handle\", the kernel's internal "
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:305
+#: build/C/man7/epoll.7:309
#, no-wrap
msgid "B<Q1>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:310
+#: build/C/man7/epoll.7:314
msgid ""
"What happens if you register the same file descriptor on an B<epoll> "
"instance twice?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:310
+#: build/C/man7/epoll.7:314
#, no-wrap
msgid "B<A1>"
msgstr ""
#
#. mtk, Feb 2008
#. type: Plain text
-#: build/C/man7/epoll.7:341
+#: build/C/man7/epoll.7:345
msgid ""
"You will probably get B<EEXIST>. However, it is possible to add a duplicate "
"(B<dup>(2), B<dup2>(2), B<fcntl>(2) B<F_DUPFD>) descriptor to the same "
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:341
+#: build/C/man7/epoll.7:345
#, no-wrap
msgid "B<Q2>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:349
+#: build/C/man7/epoll.7:353
msgid ""
"Can two B<epoll> instances wait for the same file descriptor? If so, are "
"events reported to both B<epoll> file descriptors?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:349
+#: build/C/man7/epoll.7:353
#, no-wrap
msgid "B<A2>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:353
+#: build/C/man7/epoll.7:357
msgid ""
"Yes, and events would be reported to both. However, careful programming may "
"be needed to do this correctly."
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:353
+#: build/C/man7/epoll.7:357
#, no-wrap
msgid "B<Q3>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:358
+#: build/C/man7/epoll.7:362
msgid "Is the B<epoll> file descriptor itself poll/epoll/selectable?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:358
+#: build/C/man7/epoll.7:362
#, no-wrap
msgid "B<A3>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:365
+#: build/C/man7/epoll.7:369
msgid ""
"Yes. If an B<epoll> file descriptor has events waiting then it will "
"indicate as being readable."
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:365
+#: build/C/man7/epoll.7:369
#, no-wrap
msgid "B<Q4>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:370
+#: build/C/man7/epoll.7:374
msgid ""
"What happens if one attempts to put an B<epoll> file descriptor into its own "
"file descriptor set?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:370
+#: build/C/man7/epoll.7:374
#, no-wrap
msgid "B<A4>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:381
+#: build/C/man7/epoll.7:385
msgid ""
"The B<epoll_ctl>(2) call will fail (B<EINVAL>). However, you can add an "
"B<epoll> file descriptor inside another B<epoll> file descriptor set."
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:381
+#: build/C/man7/epoll.7:385
#, no-wrap
msgid "B<Q5>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:386
+#: build/C/man7/epoll.7:390
msgid ""
"Can I send an B<epoll> file descriptor over a UNIX domain socket to another "
"process?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:386
+#: build/C/man7/epoll.7:390
#, no-wrap
msgid "B<A5>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:392
+#: build/C/man7/epoll.7:396
msgid ""
"Yes, but it does not make sense to do this, since the receiving process "
"would not have copies of the file descriptors in the B<epoll> set."
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:392
+#: build/C/man7/epoll.7:396
#, no-wrap
msgid "B<Q6>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:397
+#: build/C/man7/epoll.7:401
msgid ""
"Will closing a file descriptor cause it to be removed from all B<epoll> sets "
"automatically?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:397
+#: build/C/man7/epoll.7:401
#, no-wrap
msgid "B<A6>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:425
+#: build/C/man7/epoll.7:429
msgid ""
"Yes, but be aware of the following point. A file descriptor is a reference "
"to an open file description (see B<open>(2)). Whenever a descriptor is "
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:425
+#: build/C/man7/epoll.7:429
#, no-wrap
msgid "B<Q7>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:430
+#: build/C/man7/epoll.7:434
msgid ""
"If more than one event occurs between B<epoll_wait>(2) calls, are they "
"combined or reported separately?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:430
+#: build/C/man7/epoll.7:434
#, no-wrap
msgid "B<A7>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:433
+#: build/C/man7/epoll.7:437
msgid "They will be combined."
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:433
+#: build/C/man7/epoll.7:437
#, no-wrap
msgid "B<Q8>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:437
+#: build/C/man7/epoll.7:441
msgid ""
"Does an operation on a file descriptor affect the already collected but not "
"yet reported events?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:437
+#: build/C/man7/epoll.7:441
#, no-wrap
msgid "B<A8>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:443
+#: build/C/man7/epoll.7:447
msgid ""
"You can do two operations on an existing file descriptor. Remove would be "
"meaningless for this case. Modify will reread available I/O."
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:443
+#: build/C/man7/epoll.7:447
#, no-wrap
msgid "B<Q9>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:451
+#: build/C/man7/epoll.7:455
msgid ""
"Do I need to continuously read/write a file descriptor until B<EAGAIN> when "
"using the B<EPOLLET> flag (edge-triggered behavior) ?"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:451
+#: build/C/man7/epoll.7:455
#, no-wrap
msgid "B<A9>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:461
+#: build/C/man7/epoll.7:465
msgid ""
"Receiving an event from B<epoll_wait>(2) should suggest to you that such "
"file descriptor is ready for the requested I/O operation. You must consider "
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:467
+#: build/C/man7/epoll.7:471
msgid ""
"For packet/token-oriented files (e.g., datagram socket, terminal in "
"canonical mode), the only way to detect the end of the read/write I/O space "
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:483
+#: build/C/man7/epoll.7:487
msgid ""
"For stream-oriented files (e.g., pipe, FIFO, stream socket), the condition "
"that the read/write I/O space is exhausted can also be detected by checking "
msgstr ""
#. type: SS
-#: build/C/man7/epoll.7:483
+#: build/C/man7/epoll.7:487
#, no-wrap
-msgid "Possible Pitfalls and Ways to Avoid Them"
+msgid "Possible pitfalls and ways to avoid them"
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:484
+#: build/C/man7/epoll.7:488
#, no-wrap
msgid "B<o Starvation (edge-triggered)>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:492
+#: build/C/man7/epoll.7:496
msgid ""
"If there is a large amount of I/O space, it is possible that by trying to "
"drain it the other files will not get processed causing starvation. (This "
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:500
+#: build/C/man7/epoll.7:504
msgid ""
"The solution is to maintain a ready list and mark the file descriptor as "
"ready in its associated data structure, thereby allowing the application to "
msgstr ""
#. type: TP
-#: build/C/man7/epoll.7:500
+#: build/C/man7/epoll.7:504
#, no-wrap
msgid "B<o If using an event cache...>"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:516
+#: build/C/man7/epoll.7:520
msgid ""
"If you use an event cache or store all the file descriptors returned from "
"B<epoll_wait>(2), then make sure to provide a way to mark its closure "
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:527
+#: build/C/man7/epoll.7:531
msgid ""
"One solution for this is to call, during the processing of event 47, "
"B<epoll_ctl>(B<EPOLL_CTL_DEL>) to delete file descriptor 13 and "
msgstr ""
#. type: SH
-#: build/C/man7/epoll.7:527 build/C/man2/epoll_create.2:114 build/C/man2/epoll_ctl.2:224 build/C/man2/epoll_wait.2:174 build/C/man2/poll.2:286
+#: build/C/man7/epoll.7:531 build/C/man2/epoll_create.2:108 build/C/man2/epoll_ctl.2:225 build/C/man2/epoll_wait.2:177 build/C/man2/poll.2:312
#, no-wrap
msgid "VERSIONS"
msgstr ""
#. Its interface should be finalized in Linux kernel 2.5.66.
#. type: Plain text
-#: build/C/man7/epoll.7:533
+#: build/C/man7/epoll.7:537
msgid ""
"The B<epoll> API was introduced in Linux kernel 2.5.44. Support was added "
"to glibc in version 2.3.2."
msgstr ""
#. type: SH
-#: build/C/man7/epoll.7:533 build/C/man2/epoll_create.2:124 build/C/man2/epoll_ctl.2:229 build/C/man2/epoll_wait.2:184 build/C/man2/poll.2:306
+#: build/C/man7/epoll.7:537 build/C/man2/epoll_create.2:118 build/C/man2/epoll_ctl.2:230 build/C/man2/epoll_wait.2:187 build/C/man2/poll.2:329
#, no-wrap
msgid "CONFORMING TO"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:542
+#: build/C/man7/epoll.7:546
msgid ""
"The B<epoll> API is Linux-specific. Some other systems provide similar "
"mechanisms, for example, FreeBSD has I<kqueue>, and Solaris has "
msgstr ""
#. type: SH
-#: build/C/man7/epoll.7:542 build/C/man2/epoll_create.2:133 build/C/man2/epoll_ctl.2:252 build/C/man2/epoll_wait.2:187 build/C/man2/poll.2:338
+#: build/C/man7/epoll.7:546 build/C/man2/epoll_create.2:144 build/C/man2/epoll_ctl.2:253 build/C/man2/epoll_wait.2:219 build/C/man2/poll.2:366
#, no-wrap
msgid "SEE ALSO"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:547
+#: build/C/man7/epoll.7:551
msgid "B<epoll_create>(2), B<epoll_create1>(2), B<epoll_ctl>(2), B<epoll_wait>(2)"
msgstr ""
#. type: SH
-#: build/C/man7/epoll.7:547 build/C/man2/epoll_create.2:138 build/C/man2/epoll_ctl.2:257 build/C/man2/epoll_wait.2:191 build/C/man2/poll.2:342
+#: build/C/man7/epoll.7:551 build/C/man2/epoll_create.2:149 build/C/man2/epoll_ctl.2:258 build/C/man2/epoll_wait.2:223 build/C/man2/poll.2:370
#, no-wrap
msgid "COLOPHON"
msgstr ""
#. type: Plain text
-#: build/C/man7/epoll.7:554 build/C/man2/epoll_create.2:145 build/C/man2/epoll_ctl.2:264 build/C/man2/epoll_wait.2:198 build/C/man2/poll.2:349
+#: build/C/man7/epoll.7:558 build/C/man2/epoll_create.2:156 build/C/man2/epoll_ctl.2:265 build/C/man2/epoll_wait.2:230 build/C/man2/poll.2:377
msgid ""
-"This page is part of release 3.37 of the Linux I<man-pages> project. A "
+"This page is part of release 3.50 of the Linux I<man-pages> project. A "
"description of the project, and information about reporting bugs, can be "
"found at http://www.kernel.org/doc/man-pages/."
msgstr ""
#. type: TH
-#: build/C/man2/epoll_create.2:25
+#: build/C/man2/epoll_create.2:24
#, no-wrap
msgid "EPOLL_CREATE"
msgstr ""
#. type: TH
-#: build/C/man2/epoll_create.2:25 build/C/man2/epoll_ctl.2:21 build/C/man2/epoll_wait.2:23
+#: build/C/man2/epoll_create.2:24 build/C/man2/epoll_ctl.2:20
#, no-wrap
-msgid "2010-12-03"
+msgid "2012-04-15"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:28
+#: build/C/man2/epoll_create.2:27
msgid "epoll_create, epoll_create1 - open an epoll file descriptor"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:31 build/C/man2/epoll_wait.2:29
+#: build/C/man2/epoll_create.2:30 build/C/man2/epoll_wait.2:28
#, no-wrap
msgid "B<#include E<lt>sys/epoll.hE<gt>>\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:34
+#: build/C/man2/epoll_create.2:33
#, no-wrap
msgid ""
"B<int epoll_create(int >I<size>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:48
+#: build/C/man2/epoll_create.2:42
msgid ""
-"B<epoll_create>() creates an epoll \"instance\", requesting the kernel to "
-"allocate an event backing store dimensioned for I<size> descriptors. The "
-"I<size> is not the maximum size of the backing store but just a hint to the "
-"kernel about how to dimension internal structures. (Nowadays, I<size> is "
-"unused; see NOTES below.)"
+"B<epoll_create>() creates an B<epoll>(7) instance. Since Linux 2.6.8, the "
+"I<size> argument is ignored, but must be greater than zero; see NOTES below."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:61
+#: build/C/man2/epoll_create.2:55
msgid ""
"B<epoll_create>() returns a file descriptor referring to the new epoll "
"instance. This file descriptor is used for all the subsequent calls to the "
"destroys the instance and releases the associated resources for reuse."
msgstr ""
+#. type: SS
+#: build/C/man2/epoll_create.2:55
+#, no-wrap
+msgid "epoll_create1()"
+msgstr ""
+
#. type: Plain text
-#: build/C/man2/epoll_create.2:73
+#: build/C/man2/epoll_create.2:67
msgid ""
"If I<flags> is 0, then, other than the fact that the obsolete I<size> "
"argument is dropped, B<epoll_create1>() is the same as B<epoll_create>(). "
msgstr ""
#. type: TP
-#: build/C/man2/epoll_create.2:73
+#: build/C/man2/epoll_create.2:67
#, no-wrap
msgid "B<EPOLL_CLOEXEC>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:83
+#: build/C/man2/epoll_create.2:77
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 "
msgstr ""
#. type: SH
-#: build/C/man2/epoll_create.2:83 build/C/man2/epoll_ctl.2:156 build/C/man2/epoll_wait.2:137 build/C/man2/poll.2:257
+#: build/C/man2/epoll_create.2:77 build/C/man2/epoll_ctl.2:157 build/C/man2/epoll_wait.2:140 build/C/man2/poll.2:283
#, no-wrap
msgid "RETURN VALUE"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:90
+#: build/C/man2/epoll_create.2:84
msgid ""
"On success, these system calls return a nonnegative file descriptor. On "
"error, -1 is returned, and I<errno> is set to indicate the error."
msgstr ""
#. type: SH
-#: build/C/man2/epoll_create.2:90 build/C/man2/epoll_ctl.2:165 build/C/man2/epoll_wait.2:149 build/C/man2/poll.2:267
+#: build/C/man2/epoll_create.2:84 build/C/man2/epoll_ctl.2:166 build/C/man2/epoll_wait.2:152 build/C/man2/poll.2:293
#, no-wrap
msgid "ERRORS"
msgstr ""
#. type: TP
-#: build/C/man2/epoll_create.2:91 build/C/man2/epoll_create.2:95 build/C/man2/epoll_ctl.2:180 build/C/man2/epoll_wait.2:166 build/C/man2/poll.2:276
+#: build/C/man2/epoll_create.2:85 build/C/man2/epoll_create.2:89 build/C/man2/epoll_ctl.2:181 build/C/man2/epoll_wait.2:169 build/C/man2/poll.2:302
#, no-wrap
msgid "B<EINVAL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:95
+#: build/C/man2/epoll_create.2:89
msgid "I<size> is not positive."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:100
+#: build/C/man2/epoll_create.2:94
msgid "(B<epoll_create1>()) Invalid value specified in I<flags>."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_create.2:100
+#: build/C/man2/epoll_create.2:94
#, no-wrap
msgid "B<EMFILE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:108
+#: build/C/man2/epoll_create.2:102
msgid ""
"The per-user limit on the number of epoll instances imposed by "
"I</proc/sys/fs/epoll/max_user_instances> was encountered. See B<epoll>(7) "
msgstr ""
#. type: TP
-#: build/C/man2/epoll_create.2:108
+#: build/C/man2/epoll_create.2:102
#, no-wrap
msgid "B<ENFILE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:111
+#: build/C/man2/epoll_create.2:105
msgid "The system limit on the total number of open files has been reached."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_create.2:111 build/C/man2/epoll_ctl.2:203 build/C/man2/poll.2:283
+#: build/C/man2/epoll_create.2:105 build/C/man2/epoll_ctl.2:204 build/C/man2/poll.2:309
#, no-wrap
msgid "B<ENOMEM>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:114
+#: build/C/man2/epoll_create.2:108
msgid "There was insufficient memory to create the kernel object."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:118
+#: build/C/man2/epoll_create.2:112
msgid ""
"B<epoll_create>() was added to the kernel in version 2.6. Library support "
"is provided in glibc starting with version 2.3.2."
#. To be precise: kernel 2.5.44.
#. The interface should be finalized by Linux kernel 2.5.66.
#. type: Plain text
-#: build/C/man2/epoll_create.2:124
+#: build/C/man2/epoll_create.2:118
msgid ""
"B<epoll_create1>() was added to the kernel in version 2.6.27. Library "
"support is provided in glibc starting with version 2.9."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:127
+#: build/C/man2/epoll_create.2:121
msgid "B<epoll_create>() is Linux-specific."
msgstr ""
#. type: SH
-#: build/C/man2/epoll_create.2:127 build/C/man2/epoll_ctl.2:233 build/C/man2/poll.2:312
+#: build/C/man2/epoll_create.2:121 build/C/man2/epoll_ctl.2:234 build/C/man2/epoll_wait.2:190 build/C/man2/poll.2:335
#, no-wrap
msgid "NOTES"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:133
+#: build/C/man2/epoll_create.2:144
msgid ""
-"Since Linux 2.6.8, the I<size> argument is unused, but must be greater than "
-"zero. (The kernel dynamically sizes the required data structures without "
-"needing this initial hint.)"
+"In the initial B<epoll_create>() implementation, the I<size> argument "
+"informed the kernel of the number of file descriptors that the caller "
+"expected to add to the B<epoll> instance. The kernel used this information "
+"as a hint for the amount of space to initially allocate in internal data "
+"structures describing events. (If necessary, the kernel would allocate more "
+"space if the caller's usage exceeded the hint given in I<size>.) Nowadays, "
+"this hint is no longer required (the kernel dynamically sizes the required "
+"data structures without needing the hint), but I<size> must still be greater "
+"than zero, in order to ensure backward compatibility when new B<epoll> "
+"applications are run on older kernels."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_create.2:138
+#: build/C/man2/epoll_create.2:149
msgid "B<close>(2), B<epoll_ctl>(2), B<epoll_wait>(2), B<epoll>(7)"
msgstr ""
#. type: TH
-#: build/C/man2/epoll_ctl.2:21
+#: build/C/man2/epoll_ctl.2:20
#, no-wrap
msgid "EPOLL_CTL"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:24
+#: build/C/man2/epoll_ctl.2:23
msgid "epoll_ctl - control interface for an epoll descriptor"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:29
+#: build/C/man2/epoll_ctl.2:28
msgid ""
"B<int epoll_ctl(int >I<epfd>B<, int >I<op>B<, int >I<fd>B<, struct "
"epoll_event *>I<event>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:37
+#: build/C/man2/epoll_ctl.2:38
msgid ""
-"This system call performs control operations on the epoll instance referred "
-"to by the file descriptor I<epfd>. It requests that the operation I<op> be "
-"performed for the target file descriptor, I<fd>."
+"This system call performs control operations on the B<epoll>(7) instance "
+"referred to by the file descriptor I<epfd>. It requests that the operation "
+"I<op> be performed for the target file descriptor, I<fd>."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:41
+#: build/C/man2/epoll_ctl.2:42
msgid "Valid values for the I<op> argument are :"
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:41
+#: build/C/man2/epoll_ctl.2:42
#, no-wrap
msgid "B<EPOLL_CTL_ADD>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:53
+#: build/C/man2/epoll_ctl.2:54
msgid ""
"Register the target file descriptor I<fd> on the B<epoll> instance referred "
"to by the file descriptor I<epfd> and associate the event I<event> with the "
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:53
+#: build/C/man2/epoll_ctl.2:54
#, no-wrap
msgid "B<EPOLL_CTL_MOD>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:59
+#: build/C/man2/epoll_ctl.2:60
msgid "Change the event I<event> associated with the target file descriptor I<fd>."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:59
+#: build/C/man2/epoll_ctl.2:60
#, no-wrap
msgid "B<EPOLL_CTL_DEL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:70
+#: build/C/man2/epoll_ctl.2:71
msgid ""
"Remove (deregister) the target file descriptor I<fd> from the B<epoll> "
"instance referred to by I<epfd>. The I<event> is ignored and can be NULL "
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:78
+#: build/C/man2/epoll_ctl.2:79
msgid ""
"The I<event> argument describes the object linked to the file descriptor "
"I<fd>. The I<struct epoll_event> is defined as :"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:87
+#: build/C/man2/epoll_ctl.2:88
#, no-wrap
msgid ""
"typedef union epoll_data {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:92
+#: build/C/man2/epoll_ctl.2:93
#, no-wrap
msgid ""
"struct epoll_event {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:99
+#: build/C/man2/epoll_ctl.2:100
msgid ""
"The I<events> member is a bit set composed using the following available "
"event types:"
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:99
+#: build/C/man2/epoll_ctl.2:100
#, no-wrap
msgid "B<EPOLLIN>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:104
+#: build/C/man2/epoll_ctl.2:105
msgid "The associated file is available for B<read>(2) operations."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:104
+#: build/C/man2/epoll_ctl.2:105
#, no-wrap
msgid "B<EPOLLOUT>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:109
+#: build/C/man2/epoll_ctl.2:110
msgid "The associated file is available for B<write>(2) operations."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:109
+#: build/C/man2/epoll_ctl.2:110
#, no-wrap
msgid "B<EPOLLRDHUP> (since Linux 2.6.17)"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:115
+#: build/C/man2/epoll_ctl.2:116
msgid ""
"Stream socket peer closed connection, or shut down writing half of "
"connection. (This flag is especially useful for writing simple code to "
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:115
+#: build/C/man2/epoll_ctl.2:116
#, no-wrap
msgid "B<EPOLLPRI>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:120
+#: build/C/man2/epoll_ctl.2:121
msgid "There is urgent data available for B<read>(2) operations."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:120
+#: build/C/man2/epoll_ctl.2:121
#, no-wrap
msgid "B<EPOLLERR>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:126
+#: build/C/man2/epoll_ctl.2:127
msgid ""
"Error condition happened on the associated file descriptor. "
"B<epoll_wait>(2) will always wait for this event; it is not necessary to "
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:126
+#: build/C/man2/epoll_ctl.2:127
#, no-wrap
msgid "B<EPOLLHUP>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:132
+#: build/C/man2/epoll_ctl.2:133
msgid ""
"Hang up happened on the associated file descriptor. B<epoll_wait>(2) will "
"always wait for this event; it is not necessary to set it in I<events>."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:132
+#: build/C/man2/epoll_ctl.2:133
#, no-wrap
msgid "B<EPOLLET>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:142
+#: build/C/man2/epoll_ctl.2:143
msgid ""
"Sets the Edge Triggered behavior for the associated file descriptor. The "
"default behavior for B<epoll> is Level Triggered. See B<epoll>(7) for more "
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:142
+#: build/C/man2/epoll_ctl.2:143
#, no-wrap
msgid "B<EPOLLONESHOT> (since Linux 2.6.2)"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:156
+#: build/C/man2/epoll_ctl.2:157
msgid ""
"Sets the one-shot behavior for the associated file descriptor. This means "
"that after an event is pulled out with B<epoll_wait>(2) the associated file "
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:165
+#: build/C/man2/epoll_ctl.2:166
msgid ""
"When successful, B<epoll_ctl>() returns zero. When an error occurs, "
"B<epoll_ctl>() returns -1 and I<errno> is set appropriately."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:166 build/C/man2/epoll_wait.2:150
+#: build/C/man2/epoll_ctl.2:167 build/C/man2/epoll_wait.2:153
#, no-wrap
msgid "B<EBADF>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:172
+#: build/C/man2/epoll_ctl.2:173
msgid "I<epfd> or I<fd> is not a valid file descriptor."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:172
+#: build/C/man2/epoll_ctl.2:173
#, no-wrap
msgid "B<EEXIST>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:180
+#: build/C/man2/epoll_ctl.2:181
msgid ""
"I<op> was B<EPOLL_CTL_ADD>, and the supplied file descriptor I<fd> is "
"already registered with this epoll instance."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:193
+#: build/C/man2/epoll_ctl.2:194
msgid ""
"I<epfd> is not an B<epoll> file descriptor, or I<fd> is the same as I<epfd>, "
"or the requested operation I<op> is not supported by this interface."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:193
+#: build/C/man2/epoll_ctl.2:194
#, no-wrap
msgid "B<ENOENT>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:203
+#: build/C/man2/epoll_ctl.2:204
msgid ""
"I<op> was B<EPOLL_CTL_MOD> or B<EPOLL_CTL_DEL>, and I<fd> is not registered "
"with this epoll instance."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:208
+#: build/C/man2/epoll_ctl.2:209
msgid ""
"There was insufficient memory to handle the requested I<op> control "
"operation."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:208
+#: build/C/man2/epoll_ctl.2:209
#, no-wrap
msgid "B<ENOSPC>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:218
+#: build/C/man2/epoll_ctl.2:219
msgid ""
"The limit imposed by I</proc/sys/fs/epoll/max_user_watches> was encountered "
"while trying to register (B<EPOLL_CTL_ADD>) a new file descriptor on an "
msgstr ""
#. type: TP
-#: build/C/man2/epoll_ctl.2:218
+#: build/C/man2/epoll_ctl.2:219
#, no-wrap
msgid "B<EPERM>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:224
+#: build/C/man2/epoll_ctl.2:225
msgid "The target file I<fd> does not support B<epoll>."
msgstr ""
#. To be precise: kernel 2.5.44.
#. The interface should be finalized by Linux kernel 2.5.66.
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:229
+#: build/C/man2/epoll_ctl.2:230
msgid "B<epoll_ctl>() was added to the kernel in version 2.6."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:233
+#: build/C/man2/epoll_ctl.2:234
msgid ""
"B<epoll_ctl>() is Linux-specific. Library support is provided in glibc "
"starting with version 2.3.2."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:238
+#: build/C/man2/epoll_ctl.2:239
msgid ""
"The B<epoll> interface supports all file descriptors that support "
"B<poll>(2)."
msgstr ""
#. type: SH
-#: build/C/man2/epoll_ctl.2:238 build/C/man2/poll.2:334
+#: build/C/man2/epoll_ctl.2:239 build/C/man2/epoll_wait.2:207 build/C/man2/poll.2:362
#, no-wrap
msgid "BUGS"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:252
+#: build/C/man2/epoll_ctl.2:253
msgid ""
"In kernel versions before 2.6.9, the B<EPOLL_CTL_DEL> operation required a "
"non-NULL pointer in I<event>, even though this argument is ignored. Since "
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_ctl.2:257
+#: build/C/man2/epoll_ctl.2:258
msgid "B<epoll_create>(2), B<epoll_wait>(2), B<poll>(2), B<epoll>(7)"
msgstr ""
#. type: TH
-#: build/C/man2/epoll_wait.2:23
+#: build/C/man2/epoll_wait.2:22
#, no-wrap
msgid "EPOLL_WAIT"
msgstr ""
+#. type: TH
+#: build/C/man2/epoll_wait.2:22 build/C/man2/poll.2:31
+#, no-wrap
+msgid "2012-08-17"
+msgstr ""
+
#. type: Plain text
-#: build/C/man2/epoll_wait.2:26
+#: build/C/man2/epoll_wait.2:25
msgid "epoll_wait, epoll_pwait - wait for an I/O event on an epoll file descriptor"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:35
+#: build/C/man2/epoll_wait.2:34
#, no-wrap
msgid ""
"B<int epoll_wait(int >I<epfd>B<, struct epoll_event *>I<events>B<,>\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:53
+#: build/C/man2/epoll_wait.2:52
msgid ""
-"The B<epoll_wait>() system call waits for events on the B<epoll> instance "
-"referred to by the file descriptor I<epfd>. The memory area pointed to by "
-"I<events> will contain the events that will be available for the caller. Up "
-"to I<maxevents> are returned by B<epoll_wait>(). The I<maxevents> argument "
-"must be greater than zero."
+"The B<epoll_wait>() system call waits for events on the B<epoll>(7) "
+"instance referred to by the file descriptor I<epfd>. The memory area "
+"pointed to by I<events> will contain the events that will be available for "
+"the caller. Up to I<maxevents> are returned by B<epoll_wait>(). The "
+"I<maxevents> argument must be greater than zero."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:67
+#: build/C/man2/epoll_wait.2:70
msgid ""
-"The call waits for a maximum time of I<timeout> milliseconds. Specifying a "
-"I<timeout> of -1 makes B<epoll_wait>() wait indefinitely, while specifying "
-"a I<timeout> equal to zero makes B<epoll_wait>() to return immediately even "
-"if no events are available (return code equal to zero)."
+"The I<timeout> argument specifies the minimum number of milliseconds that "
+"B<epoll_wait>() will block. (This interval will be rounded up to the "
+"system clock granularity, and kernel scheduling delays mean that the "
+"blocking interval may overrun by a small amount.) Specifying a I<timeout> "
+"of -1 causes B<epoll_wait>() to block indefinitely, while specifying a "
+"I<timeout> equal to zero cause B<epoll_wait>() to return immediately, even "
+"if no events are available."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:71
+#: build/C/man2/epoll_wait.2:74
msgid "The I<struct epoll_event> is defined as :"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:80
+#: build/C/man2/epoll_wait.2:83
#, no-wrap
msgid ""
"typedef union epoll_data {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:85
+#: build/C/man2/epoll_wait.2:88
#, no-wrap
msgid ""
"struct epoll_event {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:96
+#: build/C/man2/epoll_wait.2:99
msgid ""
"The I<data> of each returned structure will contain the same data the user "
"set with an B<epoll_ctl>(2) (B<EPOLL_CTL_ADD>,B<EPOLL_CTL_MOD>) while the "
msgstr ""
#. type: SS
-#: build/C/man2/epoll_wait.2:96
+#: build/C/man2/epoll_wait.2:99
#, no-wrap
msgid "epoll_pwait()"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:110
+#: build/C/man2/epoll_wait.2:113
msgid ""
"The relationship between B<epoll_wait>() and B<epoll_pwait>() is analogous "
"to the relationship between B<select>(2) and B<pselect>(2): like "
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:114
+#: build/C/man2/epoll_wait.2:117
msgid "The following B<epoll_pwait>() call:"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:117
+#: build/C/man2/epoll_wait.2:120
#, no-wrap
msgid " ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:122 build/C/man2/poll.2:206
+#: build/C/man2/epoll_wait.2:125 build/C/man2/poll.2:232
msgid "is equivalent to I<atomically> executing the following calls:"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:125
+#: build/C/man2/epoll_wait.2:128
#, no-wrap
msgid " sigset_t origmask;\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:129
+#: build/C/man2/epoll_wait.2:132
#, no-wrap
msgid ""
" sigprocmask(SIG_SETMASK, &sigmask, &origmask);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:137
+#: build/C/man2/epoll_wait.2:140
msgid ""
"The I<sigmask> argument may be specified as NULL, in which case "
"B<epoll_pwait>() is equivalent to B<epoll_wait>()."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:149
+#: build/C/man2/epoll_wait.2:152
msgid ""
"When successful, B<epoll_wait>() returns the number of file descriptors "
"ready for the requested I/O, or zero if no file descriptor became ready "
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:154
+#: build/C/man2/epoll_wait.2:157
msgid "I<epfd> is not a valid file descriptor."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_wait.2:154 build/C/man2/poll.2:268
+#: build/C/man2/epoll_wait.2:157 build/C/man2/poll.2:294
#, no-wrap
msgid "B<EFAULT>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:159
+#: build/C/man2/epoll_wait.2:162
msgid ""
"The memory area pointed to by I<events> is not accessible with write "
"permissions."
msgstr ""
#. type: TP
-#: build/C/man2/epoll_wait.2:159 build/C/man2/poll.2:272
+#: build/C/man2/epoll_wait.2:162 build/C/man2/poll.2:298
#, no-wrap
msgid "B<EINTR>"
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:166
+#: build/C/man2/epoll_wait.2:169
msgid ""
-"The call was interrupted by a signal handler before any of the requested "
-"events occurred or the I<timeout> expired; see B<signal>(7)."
+"The call was interrupted by a signal handler before either any of the "
+"requested events occurred or the I<timeout> expired; see B<signal>(7)."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:174
+#: build/C/man2/epoll_wait.2:177
msgid ""
"I<epfd> is not an B<epoll> file descriptor, or I<maxevents> is less than or "
"equal to zero."
#. To be precise: kernel 2.5.44.
#. The interface should be finalized by Linux kernel 2.5.66.
#. type: Plain text
-#: build/C/man2/epoll_wait.2:180
+#: build/C/man2/epoll_wait.2:183
msgid ""
"B<epoll_wait>() was added to the kernel in version 2.6. Library support is "
"provided in glibc starting with version 2.3.2."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:184
+#: build/C/man2/epoll_wait.2:187
msgid ""
"B<epoll_pwait>() was added to Linux in kernel 2.6.19. Library support is "
"provided in glibc starting with version 2.6."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:187
+#: build/C/man2/epoll_wait.2:190
msgid "B<epoll_wait>() is Linux-specific."
msgstr ""
#. type: Plain text
-#: build/C/man2/epoll_wait.2:191
-msgid "B<epoll_create>(2), B<epoll_ctl>(2), B<epoll>(7)"
+#: build/C/man2/epoll_wait.2:200
+msgid ""
+"While one thread is blocked in a call to B<epoll_pwait>(), it is possible "
+"for another thread to add a file descriptor to the waited-upon B<epoll> "
+"instance. If the new file descriptor becomes ready, it will cause the "
+"B<epoll_wait>() call to unblock."
msgstr ""
-#. type: TH
-#: build/C/man2/poll.2:31
-#, no-wrap
-msgid "POLL"
+#. type: Plain text
+#: build/C/man2/epoll_wait.2:207
+msgid ""
+"For a discussion of what may happen if a file descriptor in an B<epoll> "
+"instance being monitored by B<epoll_wait>() is closed in another thread, "
+"see B<select>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/epoll_wait.2:219
+msgid ""
+"In kernels before 2.6.37, a I<timeout> value larger than approximately "
+"I<LONG_MAX / HZ> milliseconds is treated as -1 (i.e., infinity). Thus, for "
+"example, on a system where the I<sizeof(long)> is 4 and the kernel I<HZ> "
+"value is 1000, this means that timeouts greater than 35.79 minutes are "
+"treated as infinity."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/epoll_wait.2:223
+msgid "B<epoll_create>(2), B<epoll_ctl>(2), B<epoll>(7)"
msgstr ""
#. type: TH
#: build/C/man2/poll.2:31
#, no-wrap
-msgid "2010-09-20"
+msgid "POLL"
msgstr ""
#. type: Plain text
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:75
-msgid "The field I<fd> contains a file descriptor for an open file."
+#: build/C/man2/poll.2:86
+msgid ""
+"The field I<fd> contains a file descriptor for an open file. If this field "
+"is negative, then the corresponding I<events> field is ignored and the "
+"I<revents> field returns zero. (This provides an easy way of ignoring a "
+"file descriptor for a single B<poll>() call: simply negate the I<fd> "
+"field.)"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:80
+#: build/C/man2/poll.2:98
msgid ""
"The field I<events> is an input parameter, a bit mask specifying the events "
-"the application is interested in."
+"the application is interested in for the file descriptor I<fd>. If this "
+"field is specified as zero, then all events are ignored for I<fd> and "
+"I<revents> returns zero."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:99
+#: build/C/man2/poll.2:117
msgid ""
"The field I<revents> is an output parameter, filled by the kernel with the "
"events that actually occurred. The bits returned in I<revents> can include "
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:104
+#: build/C/man2/poll.2:122
msgid ""
"If none of the events requested (and no error) has occurred for any of the "
"file descriptors, then B<poll>() blocks until one of the events occurs."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:113
+#: build/C/man2/poll.2:139
msgid ""
-"The I<timeout> argument specifies an upper limit on the time for which "
-"B<poll>() will block, in milliseconds. Specifying a negative value in "
-"I<timeout> means an infinite timeout."
+"The I<timeout> argument specifies the minimum number of milliseconds that "
+"B<poll>() will block. (This interval will be rounded up to the system "
+"clock granularity, and kernel scheduling delays mean that the blocking "
+"interval may overrun by a small amount.) Specifying a negative value in "
+"I<timeout> means an infinite timeout. Specifying a I<timeout> of zero "
+"causes B<poll>() to return immediately, even if no file descriptors are "
+"ready."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:119
+#: build/C/man2/poll.2:145
msgid ""
"The bits that may be set/returned in I<events> and I<revents> are defined in "
"I<E<lt>poll.hE<gt>>:"
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:120
+#: build/C/man2/poll.2:146
#, no-wrap
msgid "B<POLLIN>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:123
+#: build/C/man2/poll.2:149
msgid "There is data to read."
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:123
+#: build/C/man2/poll.2:149
#, no-wrap
msgid "B<POLLPRI>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:127
+#: build/C/man2/poll.2:153
msgid ""
"There is urgent data to read (e.g., out-of-band data on TCP socket; "
"pseudoterminal master in packet mode has seen state change in slave)."
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:127
+#: build/C/man2/poll.2:153
#, no-wrap
msgid "B<POLLOUT>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:130
+#: build/C/man2/poll.2:156
msgid "Writing now will not block."
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:130
+#: build/C/man2/poll.2:156
#, no-wrap
msgid "B<POLLRDHUP> (since Linux 2.6.17)"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:141
+#: build/C/man2/poll.2:167
msgid ""
"Stream socket peer closed connection, or shut down writing half of "
"connection. The B<_GNU_SOURCE> feature test macro must be defined (before "
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:141
+#: build/C/man2/poll.2:167
#, no-wrap
msgid "B<POLLERR>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:144
+#: build/C/man2/poll.2:170
msgid "Error condition (output only)."
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:144
+#: build/C/man2/poll.2:170
#, no-wrap
msgid "B<POLLHUP>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:147
+#: build/C/man2/poll.2:173
msgid "Hang up (output only)."
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:147
+#: build/C/man2/poll.2:173
#, no-wrap
msgid "B<POLLNVAL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:152
+#: build/C/man2/poll.2:178
msgid "Invalid request: I<fd> not open (output only)."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:158
+#: build/C/man2/poll.2:184
msgid ""
"When compiling with B<_XOPEN_SOURCE> defined, one also has the following, "
"which convey no further information beyond the bits listed above:"
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:159
+#: build/C/man2/poll.2:185
#, no-wrap
msgid "B<POLLRDNORM>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:163
+#: build/C/man2/poll.2:189
msgid "Equivalent to B<POLLIN>."
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:163
+#: build/C/man2/poll.2:189
#, no-wrap
msgid "B<POLLRDBAND>"
msgstr ""
#. POLLRDBAND is used in the DECnet protocol.
#. type: Plain text
-#: build/C/man2/poll.2:167
+#: build/C/man2/poll.2:193
msgid "Priority band data can be read (generally unused on Linux)."
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:167
+#: build/C/man2/poll.2:193
#, no-wrap
msgid "B<POLLWRNORM>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:171
+#: build/C/man2/poll.2:197
msgid "Equivalent to B<POLLOUT>."
msgstr ""
#. type: TP
-#: build/C/man2/poll.2:171
+#: build/C/man2/poll.2:197
#, no-wrap
msgid "B<POLLWRBAND>"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:174
+#: build/C/man2/poll.2:200
msgid "Priority data may be written."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:178
+#: build/C/man2/poll.2:204
msgid "Linux also knows about, but does not use B<POLLMSG>."
msgstr ""
#. type: SS
-#: build/C/man2/poll.2:178
+#: build/C/man2/poll.2:204
#, no-wrap
msgid "ppoll()"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:192
+#: build/C/man2/poll.2:218
msgid ""
"The relationship between B<poll>() and B<ppoll>() is analogous to the "
"relationship between B<select>(2) and B<pselect>(2): like B<pselect>(2), "
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:198
+#: build/C/man2/poll.2:224
msgid ""
"Other than the difference in the precision of the I<timeout> argument, the "
"following B<ppoll>() call:"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:201
+#: build/C/man2/poll.2:227
#, no-wrap
msgid " ready = ppoll(&fds, nfds, timeout_ts, &sigmask);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:210
+#: build/C/man2/poll.2:236
#, no-wrap
msgid ""
" sigset_t origmask;\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:216
+#: build/C/man2/poll.2:242
#, no-wrap
msgid ""
" timeout = (timeout_ts == NULL) ? -1 :\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:223
+#: build/C/man2/poll.2:249
msgid ""
"See the description of B<pselect>(2) for an explanation of why B<ppoll>() "
"is necessary."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:235
+#: build/C/man2/poll.2:261
msgid ""
"If the I<sigmask> argument is specified as NULL, then no signal mask "
"manipulation is performed (and thus B<ppoll>() differs from B<poll>() only "
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:242
+#: build/C/man2/poll.2:268
msgid ""
"The I<timeout_ts> argument specifies an upper limit on the amount of time "
"that B<ppoll>() will block. This argument is a pointer to a structure of "
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:249
+#: build/C/man2/poll.2:275
#, no-wrap
msgid ""
"struct timespec {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:257
+#: build/C/man2/poll.2:283
msgid ""
"If I<timeout_ts> is specified as NULL, then B<ppoll>() can block "
"indefinitely."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:267
+#: build/C/man2/poll.2:293
msgid ""
"On success, a positive number is returned; this is the number of structures "
"which have nonzero I<revents> fields (in other words, those descriptors with "
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:272
+#: build/C/man2/poll.2:298
msgid ""
"The array given as argument was not contained in the calling program's "
"address space."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:276
+#: build/C/man2/poll.2:302
msgid "A signal occurred before any requested event; see B<signal>(7)."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:283
+#: build/C/man2/poll.2:309
msgid "The I<nfds> value exceeds the B<RLIMIT_NOFILE> value."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:286
+#: build/C/man2/poll.2:312
msgid "There was no space to allocate file descriptor tables."
msgstr ""
+#. library call was introduced in libc 5.4.28
#. type: Plain text
-#: build/C/man2/poll.2:299
+#: build/C/man2/poll.2:322
msgid ""
-"The B<poll>() system call was introduced in Linux 2.1.23. The B<poll>() "
-"library call was introduced in libc 5.4.28 (and provides emulation using "
-"B<select>(2) if your kernel does not have a B<poll>() system call)."
+"The B<poll>() system call was introduced in Linux 2.1.23. On older kernels "
+"that lack this system call, the glibc (and the old Linux libc) B<poll>() "
+"wrapper function provides emulation using B<select>(2)."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:306
+#: build/C/man2/poll.2:329
msgid ""
"The B<ppoll>() system call was added to Linux in kernel 2.6.16. The "
"B<ppoll>() library call was added in glibc 2.4."
#. NetBSD 3.0 has a pollts() which is like Linux ppoll().
#. type: Plain text
-#: build/C/man2/poll.2:312
+#: build/C/man2/poll.2:335
msgid "B<poll>() conforms to POSIX.1-2001. B<ppoll>() is Linux-specific."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:320
+#: build/C/man2/poll.2:343
msgid ""
"Some implementations define the nonstandard constant B<INFTIM> with the "
"value -1 for use as a I<timeout> for B<poll>(). This constant is not "
"provided in glibc."
msgstr ""
+#. type: Plain text
+#: build/C/man2/poll.2:348
+msgid ""
+"For a discussion of what may happen if a file descriptor being monitored by "
+"B<poll>() is closed in another thread, see B<select>(2)."
+msgstr ""
+
#. type: SS
-#: build/C/man2/poll.2:320
+#: build/C/man2/poll.2:348
#, no-wrap
-msgid "Linux Notes"
+msgid "Linux notes"
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:334
+#: build/C/man2/poll.2:362
msgid ""
"The Linux B<ppoll>() system call modifies its I<timeout_ts> argument. "
"However, the glibc wrapper function hides this behavior by using a local "
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:338
+#: build/C/man2/poll.2:366
msgid ""
"See the discussion of spurious readiness notifications under the BUGS "
"section of B<select>(2)."
msgstr ""
#. type: Plain text
-#: build/C/man2/poll.2:342
+#: build/C/man2/poll.2:370
msgid "B<select>(2), B<select_tut>(2), B<time>(7)"
msgstr ""