fd07043180
Signed-off-by: Anton D. Kachalov <mouse@yandex-team.ru>
60 lines
1.4 KiB
C
60 lines
1.4 KiB
C
#ifndef _EPOLL__H
|
|
#define _EPOLL__H
|
|
|
|
#include <poll.h>
|
|
|
|
enum EPOLL_EVENTS
|
|
{
|
|
EPOLLIN = POLLIN,
|
|
#define EPOLLIN EPOLLIN
|
|
EPOLLPRI = POLLPRI,
|
|
#define EPOLLPRI EPOLLPRI
|
|
EPOLLOUT = POLLOUT,
|
|
#define EPOLLOUT EPOLLOUT
|
|
EPOLLRDNORM = POLLRDNORM,
|
|
#define EPOLLRDNORM EPOLLRDNORM
|
|
EPOLLRDBAND = POLLRDBAND,
|
|
#define EPOLLRDBAND EPOLLRDBAND
|
|
EPOLLWRNORM = POLLWRNORM,
|
|
#define EPOLLWRNORM EPOLLWRNORM
|
|
EPOLLWRBAND = POLLWRBAND,
|
|
#define EPOLLWRBAND EPOLLWRBAND
|
|
EPOLLERR = POLLERR,
|
|
#define EPOLLERR EPOLLERR
|
|
EPOLLHUP = POLLHUP,
|
|
#define EPOLLHUP EPOLLHUP
|
|
};
|
|
|
|
#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */
|
|
#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */
|
|
#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */
|
|
|
|
typedef union poll_data
|
|
{
|
|
int fd; /* The descriptor being polled */
|
|
} epoll_data_t;
|
|
|
|
struct epoll_event
|
|
{
|
|
epoll_data_t data;
|
|
sem_t *sem; /* Pointer to semaphore used to post output event */
|
|
pollevent_t events; /* The input event flags */
|
|
pollevent_t revents; /* The output event flags */
|
|
FAR void *priv; /* For use by drivers */
|
|
};
|
|
|
|
struct epoll_head
|
|
{
|
|
int size;
|
|
int occupied;
|
|
struct epoll_event *evs;
|
|
};
|
|
|
|
int epoll_create(int size);
|
|
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *ev);
|
|
int epoll_wait(int epfd, struct epoll_event *evs, int maxevents, int timeout);
|
|
|
|
void epoll_close(int epfd);
|
|
|
|
#endif
|