epoll源码分析与走读
首先我们需要知道epoll有三个方法:epoll_create,epoll_ctl,epoll_wait;
1:epoll_create
这个方法是在创建内核事件表,在内核空间创建一个红黑树。
对于linux文件,他有一个文件表,里面有不同的元素,每当我们打开一个文件就会创建一个struct file文件,里面还有一个inode(本身的属性信息),通过此找到在磁盘上的文件;
对于epoll源码来说他是通过ep_getfd方法来对这三个参数进行改变和关联的
根据上述过程我们得到下图的结构
2:epoll_ctl
首先我们需要知道他的参数,我们将获取的fd传进去,实际上增删是对其的红黑树进行操作,然后我们是根据fd找到struct file,再根据private_data进行找到内核事件表,再到红黑树里面找就如上图的结构
3:epoll_wait
他所做的事情就是从就绪队列中获取描述符,拷贝到用户空间,所需要做的是就是这个事情