epoll 系统调用

应用层 epoll 三个系统调用函数的原型:

  • #include <sys/epoll.h>
  • int epoll_create(int size);
  • int epoll_ctl(int epfd, int op, int fd, struct epoll_event* event);
  • int epoll_wait(int epfd, struct epoll_event* events, int maxevents, int timeout);

epoll 数据结构

epoll 数据结构主要有 epoll 事件 epoll_event,监听系统本身 eventpoll,被监听的对象 epollitem,以及被监听对象在设备等待队列中的存在形式 eppoll_entry。

epoll_event

image.png

eventpoll

image.png

epitem

image.png

eppoll_entry

image.png

epoll 内核实现

epoll_create

image.png

image.png

epoll_ctl

image.png

image.png

epoll_wait

image.png

image.png