使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的访问,这两个系统调用最终又会引发设备驱动中的poll()函数被执行,所以我们的问题就集中到了如何编写设备驱动中的poll()函数就可以了。先来看看设备驱动中的poll()函数原型:
unsigned int (*poll)(struct file *filp, struct poll_table *wait);
本文探讨了在Linux驱动程序中如何使用poll机制。应用程序借助select()和poll()系统调用检查设备的非阻塞访问,这涉及驱动中的poll()函数。poll()函数主要任务是调用poll_wait()将等待队列加入poll_table,并返回设备的读写状态掩码。poll_wait()用于将进程添加到等待队列,但不引起阻塞。
使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的访问,这两个系统调用最终又会引发设备驱动中的poll()函数被执行,所以我们的问题就集中到了如何编写设备驱动中的poll()函数就可以了。先来看看设备驱动中的poll()函数原型:
unsigned int (*poll)(struct file *filp, struct poll_table *wait);
643
1161

被折叠的 条评论
为什么被折叠?