轮询
应用程序中使用的系统调用select()和poll()查询是否可对设备驱动进行无阻塞的访问,他们都是最终引发驱动
中的poll()函数被执行。
应用程序中的轮询
#include <sys/select.h>
int select( int nfds, fd_set FAR* readfds, fd_set * writefds, fd_set * exceptfds, const struct timeval * timeout);
该函数用于监视一个或者多个文件描述符的变化情况——读写或是异常,发生变化后我们就可以去做相应处理read
或者write()。
驱动程序中的轮询
设备驱动中poll()的原型
unsigned int (*poll) (struct file *, struct poll_table_struct *);该函数进行两项工作
1,对可能引起设备文件状态变化的等待队列调整用poll_wait()函数,将对应的等待队列头添加到poll_table。
2,返回表示是否能对设备进行无阻塞读,写访问的掩码。
关键的用于向poll_tab