blob: 23b80259488286a6c80bd6ebc0936817ed20925b [file] [log] [blame]
#ifndef __MTCP_EPOLL_H_
#define __MTCP_EPOLL_H_
#include "mtcp_api.h"
#ifdef __cplusplus
extern "C" {
#endif
/*----------------------------------------------------------------------------*/
enum mtcp_epoll_op
{
MTCP_EPOLL_CTL_ADD = 1,
MTCP_EPOLL_CTL_DEL = 2,
MTCP_EPOLL_CTL_MOD = 3,
};
/*----------------------------------------------------------------------------*/
enum mtcp_event_type
{
MTCP_EPOLLNONE = 0x000,
MTCP_EPOLLIN = 0x001,
MTCP_EPOLLPRI = 0x002,
MTCP_EPOLLOUT = 0x004,
MTCP_EPOLLRDNORM = 0x040,
MTCP_EPOLLRDBAND = 0x080,
MTCP_EPOLLWRNORM = 0x100,
MTCP_EPOLLWRBAND = 0x200,
MTCP_EPOLLMSG = 0x400,
MTCP_EPOLLERR = 0x008,
MTCP_EPOLLHUP = 0x010,
MTCP_EPOLLRDHUP = 0x2000,
MTCP_EPOLLONESHOT = (1 << 30),
MTCP_EPOLLET = (1 << 31)
};
/*----------------------------------------------------------------------------*/
typedef union mtcp_epoll_data
{
void *ptr;
int sockid;
uint32_t u32;
uint64_t u64;
} mtcp_epoll_data_t;
/*----------------------------------------------------------------------------*/
struct mtcp_epoll_event
{
uint32_t events;
mtcp_epoll_data_t data;
};
/*----------------------------------------------------------------------------*/
int
mtcp_epoll_create(mctx_t mctx, int size);
/*----------------------------------------------------------------------------*/
int
mtcp_epoll_ctl(mctx_t mctx, int epid,
int op, int sockid, struct mtcp_epoll_event *event);
/*----------------------------------------------------------------------------*/
int
mtcp_epoll_wait(mctx_t mctx, int epid,
struct mtcp_epoll_event *events, int maxevents, int timeout);
/*----------------------------------------------------------------------------*/
char *
EventToString(uint32_t event);
/*----------------------------------------------------------------------------*/
#ifdef __cplusplus
};
#endif
#endif /* __MTCP_EPOLL_H_ */