Linux I/O多路复用之select()/poll()/epoll() 参考文献:

poll_initwait(&table):就是将__pollwait设为回调函数

poll函数:后面会去调用驱动程序的poll函数,poll函数调用pollwait就等于调用__pollwait,将当前进程加入到等待队列中,以便唤醒休眠后的当前进程。

      然后返回当前驱动设备的状态(mask),以便收集设备的事件。

schedule_timeout(__timeout):休眠函数,如果发生事件,就会被唤醒。

select函数:select---->sys_select()---->core_sys_select()---->do_select();下面是do_select的工作流程:

Linux I/O多路复用之select()/poll()/epoll()
参考文献:

poll()函数:poll和select本质上是一样的,只是poll没有最大连接数的限制,因为poll是存储在链表里的。

select/poll源码剖析:https://www.jianshu.com/p/da6642369ef0

select源码剖析:https://blog.csdn.net/wendy_keeping/article/details/76659517

select函数详解:https://www.cnblogs.com/alantu2018/p/8612722.html

poll源码剖析:https://blog.csdn.net/hhhanpan/article/details/80633101

select、poll、epoll之间的区别:https://www.cnblogs.com/aspirant/p/9166944.html

epoll基本原理及使用框架:https://www.cnblogs.com/panfeng412/articles/2229095.html

epoll原理解析:https://blog.csdn.net/linkedin_38454662/article/details/73337208