int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
ОПИСАНИЕ
Управляет описателем
epoll-
epfd,
через запрос выполнения операции
op
на цели, описателе файла
fd.
Событие
event
описывает объект, привязанный к описателю файла
fd.
Структура
struct epoll_event
определена так:
typedef union epoll_data {
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
} epoll_data_t;
struct epoll_event {
__uint32_t events; /* события epoll */
epoll_data_t data; /* переменные данных пользователя */
};
Элемент
events
является набором битов, созданном с помощью следующих
возможных типов событий:
EPOLLIN
Ассоциированный файл доступен для операций
read(2).
EPOLLOUT
Ассоциированный файл доступен для операций
write(2).
EPOLLPRI
Нет срочных данных, доступных для операций
read(2).
EPOLLERR
Произошла ошибка на ассоциированном описателе файлов.
EPOLLHUP
На ассоциированном описателе файлов произошло зависание.
EPOLLET
Устанавливает поведение Edge Triggered для ассоциированного описателя файлов.
Поведением
epoll
по умолчанию является Level Triggered. Смотрите
epoll(4)
для более подробной информации об архитектурах событий
Edge и Level Triggered.
Интрерфейс
epoll
поддерживает все описатели файлов, поддерживаемые
poll(2).
Корректными значениями для параметра
op
являются:
EPOLL_CTL_ADD
Добавить целевой описатель файла
fd
в описатель
epoll
-
epfd
и ассоциировать событие
event
с внутренним файлом, связанном с
fd.
EPOLL_CTL_MOD
Изменить событие
event
связанное с целевым описателем файла
fd.
EPOLL_CTL_DEL
Убрать целевой описатель файла
fd
из описателя
epoll
-
epfd.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При успешном завершении работы
epoll_ctl(2)
возвращает ноль.
При ошибках
epoll_ctl(2)
возвращает -1 и устанавливает
errno
соответственно ошибке.
НАЙДЕННЫЕ ОШИБКИ
EBADF
Описатель файлов
epfd
не является корректным описателем файлов.
EPERM
Целевой файл
fd
не поддерживается
epoll.
EINVAL
Переданный описатель файла
epfd,
не является описателем файла
epoll
или запрошенная операция
op
не поддерживается этим интерфейсом.
ENOMEM
Недостаточно памяти для обработки запрошенной операции управления
op.
СООТВЕТСТВИЕ СТАНДАРТАМ
epoll_ctl(2)
является новым API, представленным в ядре Linux 2.5.44.
Интерфейс должен стать окончательно завершенным к ядру Linux 2.5.66.