epoll_ctl — control interface for an epoll descriptor
#include <sys/epoll.h>
int
epoll_ctl( |
int | epfd, |
| int | op, | |
| int | fd, | |
| struct epoll_event * | event); |
Control an epoll
descriptor, epfd, by
requesting that the operation op be performed on the target
file descriptor, fd.
The event describes
the object linked to the file descriptor fd. 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 events
member is a bit set composed using the following available
event types :
EPOLLINThe associated file is available for read(2) operations.
EPOLLOUTThe associated file is available for write(2) operations.
EPOLLRDHUP (since kernel
2.6.17)Stream socket peer closed connection, or shut down writing half of connection. (This flag is especially useful for writing simple code to detect peer shutdown when using Edge Triggered monitoring.)
EPOLLPRIThere is urgent data available for read(2) operations.
EPOLLERRError condition happened on the associated file
descriptor. epoll_wait(2) will
always wait for this event; it is not necessary to set
it in events.
EPOLLHUPHang up happened on the associated file descriptor.
epoll_wait(2) will
always wait for this event; it is not necessary to set
it in events.
EPOLLETSets the Edge Triggered behavior for the associated
file descriptor. The default behavior for epoll is Level
Triggered. See epoll(7) for more
detailed information about Edge and Level Triggered
event distribution architectures.
EPOLLONESHOT (since kernel
2.6.2)Sets the one-shot behavior for the associated file
descriptor. This means that after an event is pulled
out with epoll_wait(2) the
associated file descriptor is internally disabled and
no other events will be reported by the epoll interface. The
user must call epoll_ctl(2) with
EPOLL_CTL_MOD to
re-enable the file descriptor with a new event
mask.
The epoll
interface supports all file descriptors that support poll(2). Valid values for
the op parameter are
:
EPOLL_CTL_ADDAdd the target file descriptor
fdto theepolldescriptorepfdand associate the eventeventwith the internal file linked tofd.EPOLL_CTL_MODChange the event
eventassociated with the target file descriptorfd.EPOLL_CTL_DELRemove the target file descriptor
fdfrom theepollfile descriptor,epfd. Theeventis ignored and can be NULL (but see BUGS below).
When successful, epoll_ctl(2) returns zero.
When an error occurs, epoll_ctl(2) returns
−1 and errno is set
appropriately.
epfd or
fd is not a
valid file descriptor.
op was
EPOLL_CTL_ADD, and the supplied file descriptor
fd is already
in epfd.
epfd is not
an epoll file
descriptor, or fd is the same as
epfd, or the
requested operation op is not supported by
this interface.
op was
EPOLL_CTL_MOD or EPOLL_CTL_DEL, and fd is not in epfd.
There was insufficient memory to handle the
requested op
control operation.
The target file fd does not support
epoll.
In kernel versions before 2.6.9, the EPOLL_CTL_DEL operation required a non-NULL
pointer in event,
even though this argument is ignored. Since kernel 2.6.9,
event can be
specified as NULL when using EPOLL_CTL_DEL.
epoll_create(2), epoll_wait(2), poll(2), epoll(7)
|
|