mirror of
https://github.com/apache/nuttx.git
synced 2026-06-07 01:05:54 +08:00
Merged in rnouse/nuttx (pull request #13)
Add simple `epoll' wrapper around `poll'
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user