一言以弊之:在指定的时间内去查询是否有时间发生
APP:poll
函数彻底分析:
APP:poll调用过程!
sys_poll
return do_sys_poll(ufds, nfds, &timeout_jiffies);
poll_initwait(&table); //初始化函数
init_poll_funcptr(&pwq->pt, __pollwait); // 做了这个事情
do_poll(nfds, head, &table, timeout);
for (;;)
{
for (; pfd != pfd_end; pfd++) // 查询多个驱动程序!
{
//判断do_pollfd,最终调用到驱动程序的POLL函数,如果驱动程序中的poll函数返回值不为0的话,count++
if (do_pollfd(pfd, pt)) <== mask = file->f_op->poll(file, pwait); return mask;
{ //然后调用到poll函数中的poll_wait(file, &button_waitq, wait);
&nb