sys_epoll_ctl  [fs/eventpoll.c]


Control interface for an epoll descriptor.

Arguments

eax 255
ebx epoll descriptor to control.
ecx Operation to be performed on the target file descriptor. It may be one of the following values:

EPOLL_CTL_ADD Add the target file descriptor edx to the epoll descriptor ebx and associate the event esi with the internal file linked to edx.
EPOLL_CTL_MOD Change the event esi associated with the target file descriptor edx.
EPOLL_CTL_DEL Remove the target file descriptor edx from the epoll file descriptor, ebx. The esi is ignored and can be NULL (but see Remarks below).
edx Target file descriptor.
esi Pointer to an epoll_event structure which describes the object linked to the target file descriptor:

struc epoll_event
{
events rd 1
data   rq 1
}

epoll_event members:

events

This member is a bit set composed using the following available event types:

EPOLLIN The associated file is available for sys_read operations.
EPOLLOUT The associated file is available for sys_write 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 sys_read operations.
EPOLLERR Error condition happened on the associated file descriptor. sys_epoll_wait will always wait for this event; it is not necessary to set it in epoll_event.events.
EPOLLHUP Hang up happened on the associated file descriptor. sys_epoll_wait will always wait for this event; it is not necessary to set it in epoll_event.events.
EPOLLET Sets the Edge Triggered behavior for the associated file descriptor. The default behavior for epoll is Level Triggered.
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 sys_epoll_wait the associated file descriptor is internally disabled and no other events will be reported by the epoll interface. The user must call sys_epoll_ctl with EPOLL_CTL_MOD to re-enable the file descriptor with a new event mask.

Return values

If the system call succeeds the return value is 0.
If the system call fails the return value is one of the following errno values:

-EBADF ebx or edx is not a valid file descriptor.
-EEXIST ecx was EPOLL_CTL_ADD, and the supplied file descriptor edx is already in ebx.
-EINVAL ebx is not an epoll file descriptor, or edx is the same as ebx, or the requested operation ecx is not supported by this interface.
-ENOENT ecx was EPOLL_CTL_MOD or EPOLL_CTL_DEL, and edx is not in ebx.
-ENOMEM There was insufficient memory to handle the requested ecx control operation.
-EPERM The target file edx does not support epoll.

Remarks

In kernel versions before 2.6.9, the EPOLL_CTL_DEL operation required a non-NULL pointer in esi, even though this argument is ignored. Since kernel 2.6.9, esi can be specified as NULL when using EPOLL_CTL_DEL.

Compatibility

n/a