Unix for Beginners
Unix Shell Programming
Advanced Unix
Unix Useful References
Unix Useful Resources
Selected Reading
Copyright © 2014 by tutorialspoint
|
epoll_ctl() - Unix, Linux System Call
Advertisements
NAME
epoll_ctl - control interface for an epoll descriptor
SYNOPSIS
#include <sys/epoll.h>
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
|
DESCRIPTION
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 :
Error Code | Description |
EPOLLIN | The associated file is available forread(2)
operations.
|
EPOLLOUT |
The associated file is available for
write(2)
operations.
|
EPOLLRDHUP |
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.)
|
EPOLLPRI |
There is urgent data available for
read(2)
operations.
|
EPOLLERR |
Error 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. |
EPOLLHUP |
Hang 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. |
EPOLLET |
Sets the Edge Triggered behaviour for the associated file descriptor.
The default behaviour 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 behaviour 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 :
|
|
Code | Description |
EPOLL_CTL_ADD |
Add the target file descriptor
fd to the
epoll descriptor
epfd and associate the event
event with the internal file linked to
fd. |
EPOLL_CTL_MOD |
Change the event
event associated with the target file descriptor
fd. |
EPOLL_CTL_DEL |
Remove the target file descriptor
fd from the
epoll file descriptor,
epfd. The
event is ignored and can be NULL (but see BUGS below).
|
|
RETURN VALUE
When successful,
epoll_ctl(2)
returns zero. When an error occurs,
epoll_ctl(2)
returns -1 and
errno is set appropriately.
ERRORS
Error Code | Description |
EBADF |
epfd or
fd is not a valid file descriptor.
|
EEXIST |
op was EPOLL_CTL_ADD, and the supplied file descriptor
fd is already in
epfd. |
EINVAL |
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.
|
ENOENT |
op was EPOLL_CTL_MOD or EPOLL_CTL_DEL, and
fd is not in
epfd. |
ENOMEM |
There was insufficient memory to handle the requested
op control operation.
|
EPERM |
The target file
fd does not support
epoll. |
CONFORMING TO
epoll_ctl(2)
is a new API introduced in Linux kernel 2.5.44.
The interface should be finalized by Linux kernel 2.5.66.
BUGS
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.
SEE ALSO
Advertisements
|
|
|
To Continue Learning Please Login
Login with Google