Linux驱动程序之poll机制
来源:互联网 发布:快速幂算法求a的n次方 编辑:程序博客网 时间:2024/06/05 17:56
使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的访问,这两个系统调用最终又会引发设备驱动中的poll()函数被执行,所以我们的问题就集中到了如何编写设备驱动中的poll()函数就可以了。先来看看设备驱动中的poll()函数原型:
unsigned int (*poll)(struct file *filp, struct poll_table *wait);
这个函数要进行下面两项工作:首先,对可能引起设备文件状态变化的等待队列调用poll_wait(),将对应的等待队列头添加到poll_table.然后,返回表示是否能对设备进行无阻塞读写访问的掩码。
在上面提到了一个poll_wait()函数,它的原型:
void poll_wait(struct file *filp, wait_queue_head_t *queue, poll_table *wait);
它的作用就是把当前进程添加到wait参数指定的等待列表(poll_table)中。需要注意的是这个函数是不会引起阻塞的。poll_table定义在“include/linux/poll.h, line 38“,具体如下:
<span style="font-size:14px;">typedef struct poll_table_struct { poll_queue_proc qproc; unsigned long key; } poll_table; </span>
经过以上驱动程序的poll()函数应该返回设备资源的可获取状态:POLLIN, POLLOUT, POLLPRI, POLLERR, POLLNVAL等宏的位"或"结果。每个宏的含义都表示设备的一种状态,如:
常量说明POLLIN普通或优先级带数据可读POLLRDNORM普通数据可读POLLRDBAND优先级带数据可读POLLPRI高优先级数据可读POLLOUT普通数据可写POLLWRNORM普通数据可写POLLWRBAND优先级带数据可写POLLERR发生错误POLLHUP发生挂起POLLNVAL描述字不是一个打开的文件
0 0
- Linux驱动程序之poll机制
- Linux设备驱动之五----带poll机制的驱动程序
- linux驱动程序中的poll机制编程
- 字符设备驱动程序之poll机制
- 字符设备驱动程序之poll机制
- 字符设备驱动程序之poll机制
- 嵌入式linux之poll机制
- Linux驱动之poll机制
- 字符设备驱动程序之按键——poll机制
- linux-3.4.2之poll机制分析
- linux设备驱动之POLL机制
- Linux字符设备驱动之poll机制
- Linux设备驱动程序——高级字符驱动程序操作(poll机制)
- 高级字符驱动程序操作(poll机制)
- linux poll工作机制
- Linux poll机制分析
- Linux poll机制
- linux的poll机制
- QRCode生成和解析二维码
- 计算机基本原理之内存编址
- NKOJ 1791 Party at Hali-Bula(树状DP)
- java8中的接口
- js加减乘除
- Linux驱动程序之poll机制
- 关于颜色
- 折半查找算法
- 成为一名嵌入式Linux开发工程师需要学习哪些知识?
- 大写字母转换成小写字母
- 数据预处理和weka.filters的使用--数据挖掘学习和weka使用(三)
- 【C语言】字符串匹配
- java servlet实现图形验证码
- 解读Web_url