Home / cs-notes / Operating System / Linux / Syscalls / epoll / methods
int epoll_create(int size)
- 内核产生一个 epoll 实例
- 返回一个文件描述符
- epoll实例的句柄
- epfd
- epoll实例的句柄
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
typedef union epoll_data {
void *ptr; /* 指向用户自定义数据 */
int fd; /* 注册的文件描述符 */
uint32_t u32; /* 32-bit integer */
uint64_t u64; /* 64-bit integer */
} epoll_data_t;
struct epoll_event {
uint32_t events; /* 描述epoll事件 */
epoll_data_t data; /* 见上面的结构体 */
};
- op
- EPOLL_CTL_ADD:向interest list添加一个需要监视的描述符
- EPOLL_CTL_DEL:从interest list中删除一个描述符
- EPOLL_CTL_MOD:修改interest list中一个描述符
- epoll_event
- events
- bit mask
- 期望事件
- 可多选
- events
- 常用 epoll 事件
- EPOLLIN:fd 可读
- EPOLLOUT:fd 可写
- EPOLLET:edge triggered
- EPOLLONESHOT:只首次通知,后续不通知
- EPOLLHUP:fd 挂起(默认监测事件)
- EPOLLERR:fd 错误 (默认检测事件)
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)