EPOLL_WAIT


HOME

EPOLL_WAIT

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
VERSIONS
CONFORMING TO
NOTES
BUGS
SEE ALSO
COLOPHON

NAME

epoll_wait, epoll_pwait − wait for an I/O event on an epoll file descriptor

SYNOPSIS

#include <sys/epoll.h>

int epoll_wait(int epfd, struct epoll_event *events,
int
maxevents, int timeout);
int epoll_pwait(int
epfd, struct epoll_event *events,
int
maxevents, int timeout,
const sigset_t *
sigmask);

DESCRIPTION

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 :

typedef union epoll_data {
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
} epoll_data_t;

struct epoll_event {
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.

epoll_pwait()
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:

sigset_t origmask;

sigprocmask(SIG_SETMASK, &sigmask, &origmask);
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().

RETURN VALUE

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.

ERRORS

EBADF

epfd is not a valid file descriptor.

EFAULT

The memory area pointed to by events is not accessible with write permissions.

EINTR

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).

EINVAL

epfd is not an epoll file descriptor, or maxevents is less than or equal to zero.

VERSIONS

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.

CONFORMING TO

epoll_wait() is Linux-specific.

NOTES

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).

BUGS

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.

SEE ALSO

epoll_create(2), epoll_ctl(2), epoll(7)

COLOPHON

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

manpages/rsa.3ssl.html
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

manpages/glEvalCoord1dv.3gl.html
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

manpages/fields.3pm.html
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

manpages/Tcl_UniCharCaseMatch.3.html
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

manpages/gethostent_r.3.html
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

manpages/glViewport.3gl.html
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

manpages/glGetColorTableParameteriv.3gl.html
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

manpages/vfs_notify_fam.8.html
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

manpages/SDL_LockSurface.3.html
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

manpages/CPANPLUS::Error.3pm.html
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

manpages/posix_fallocate.3.html
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

manpages/gnutls_x509_crt_set_version.3.html
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





We can't live, work or learn in freedom unless the software we use is free.