epoll_wait, epoll_pwait − wait for an I/O event on an epoll file descriptor
epoll_wait(int epfd, struct epoll_event
int maxevents, int timeout);
int epoll_pwait(int epfd, struct epoll_event *events,
int maxevents, int timeout,
const sigset_t *sigmask);
The epoll_wait() system call waits for events on the epoll(7) instance referred to by the file descriptor epfd. The memory area pointed to by events will contain the events that will be available for the caller. Up to maxevents are returned by epoll_wait(). The maxevents argument must be greater than zero.
The timeout argument specifies the number of milliseconds that epoll_wait() will block. The call will block until either:
a file descriptor delivers an event;
the call is interrupted by a signal handler; or
the timeout expires.
Note that the timeout 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 timeout of −1 causes epoll_wait() to block indefinitely, while specifying a timeout equal to zero cause epoll_wait() to return immediately, even if no events are available.
The struct epoll_event is defined as :
uint32_t events; /* Epoll events */
epoll_data_t data; /* User data variable */
The data of each returned structure will contain the same data the user set with an epoll_ctl(2) (EPOLL_CTL_ADD, EPOLL_CTL_MOD) while the events member will contain the returned event bit field.
The relationship between epoll_wait() and epoll_pwait() is analogous to the relationship between select(2) and pselect(2): like pselect(2), epoll_pwait() allows an application to safely wait until either a file descriptor becomes ready or until a signal is caught.
The following epoll_pwait() call:
ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);
is equivalent to atomically executing the following calls:
ready = epoll_wait(epfd, &events, maxevents, timeout);
sigprocmask(SIG_SETMASK, &origmask, NULL);
The sigmask argument may be specified as NULL, in which case epoll_pwait() is equivalent to epoll_wait().
When successful, epoll_wait() returns the number of file descriptors ready for the requested I/O, or zero if no file descriptor became ready during the requested timeout milliseconds. When an error occurs, epoll_wait() returns −1 and errno is set appropriately.
epfd is not a valid file descriptor.
The memory area pointed to by events is not accessible with write permissions.
The call was interrupted by a signal handler before either 411toppm(1) any of the requested events occurred or 411toppm(1) the timeout expired; see signal(7).
epfd is not an epoll file descriptor, or maxevents is less than or equal to zero.
epoll_wait() was added to the kernel in version 2.6. Library support is provided in glibc starting with version 2.3.2.
epoll_pwait() was added to Linux in kernel 2.6.19. Library support is provided in glibc starting with version 2.6.
epoll_wait() is Linux-specific.
While one thread is blocked in a call to epoll_pwait(), it is possible for another thread to add a file descriptor to the waited-upon epoll instance. If the new file descriptor becomes ready, it will cause the epoll_wait() call to unblock.
For a discussion of what may happen if a file descriptor in an epoll instance being monitored by epoll_wait() is closed in another thread, see select(2).
In kernels before 2.6.37, a timeout value larger than approximately LONG_MAX / HZ milliseconds is treated as −1 (i.e., infinity). Thus, for example, on a system where the sizeof(long) is 4 and the kernel HZ value is 1000, this means that timeouts greater than 35.79 minutes are treated as infinity.
epoll_create(2), epoll_ctl(2), epoll(7)
This page is part of release 3.69 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at http://www.kernel.org/doc/man−pages/.
More Linux Commands
rsa(3ssl) - RSA public key cryptosystem - Linux manual page
These functions implement RSA public key encryption and signatures as defined in PKCS #1 v2.0 [ RFC 2437]. The RSA structure consists of several BIGNUM componen
glEvalCoord1dv(3gl) - evaluate enabled one- and two-dimensio
glEvalCoord1 evaluates enabled one-dimensional maps at argument u. glEvalCoord2 does the same for two-dimensional maps using two domain values, u and v. To defi
fields(3pm) - compile-time class fields - Linux manual page
The fields pragma enables compile-time and run-time verified class fields. NOTE: The current implementation keeps the declared fields in the %FIELDS hash of the
Tcl_UniCharCaseMatch(3) - routines for manipulating UTF-8 st
These routines convert between UTF-8 strings and Tcl_UniChars. A Tcl_UniChar is a Unicode character represented as an unsigned, fixed-size quantity. A UTF-8 cha
gethostent_r(3) - get network host entry - Linux man page...
The gethostbyname*(), gethostbyaddr*(), herror(), and hstrerror() functions are obsolete. Applications should use getaddrinfo(3), getnameinfo(3), and gai_strerr
glViewport(3gl) - set the viewport - Linux manual page......
glViewport specifies the affine transformation of $x$ and $y$ from normalized device coordinates to window coordinates. Let ($x sub nd$, $y sub nd$) be normaliz
glGetColorTableParameteriv(3gl) - get color lookup table par
Returns parameters specific to color table target. When pname is set to GL_COLOR_TABLE_SCALE or GL_COLOR_TABLE_BIAS, glGetColorTableParameter returns the color
vfs_notify_fam(8) - FAM support for file change notification
This VFS module is part of the samba(7) suite. The vfs_notify_fam module makes use of the system FAM (File Alteration Monitor) daemon to implement file change n
SDL_LockSurface(3) - Lock a surface for directly access.....
SDL_LockSurface sets up a surface for directly accessing the pixels. Between calls to SDL_LockSurface and SDL_UnlockSurface, you can write to and read from surf
CPANPLUS::Error(3pm) - (unknown subject) - Linux man page...
This module provides the error handling code for the CPANPLUS libraries, and is mainly intended for internal use. FUNCTIONS cp_msg(message string [,VERBOSE]) Re
posix_fallocate(3) - allocate file space - Linux man page...
The function posix_fallocate() ensures that disk space is allocated for the file referred to by the descriptor fd for the bytes in the range starting at offset
gnutls_x509_crt_set_version(3) - API function (Man Page)....
This function will set the version of the certificate. This must be one for X.509 version 1, and so on. Plain certificates without extensions must have version