poll查询
来源:互联网 发布:网络访问安全设计 编辑:程序博客网 时间:2024/05/29 07:17
应用程序开发过程,读写一个设备之前,常常需要查询一下设备是否有数据可读写,可以通过查询,然后根据查询的结果进行下一步的操作。这样的操作叫做轮循操作,需要应用层与驱动层配合使用,以下直接说明:
应用层:
1 定义要轮询的设备文件描述符并将其初始化,代码:
struct pollfd pfds; //定义轮询设备
memset(&pfds,0,sizeof(pfds));
pfds->POLL | POLOUT;
fd=open("xxx",O_RDWR);
pfds->fd=fd;
2 调用poll函数轮询多个设备描述符
3.根据poll返回输出信息,判断是哪个设备发生了什么事件,然后应用程序做相应的处理。
驱动层:
1.定义设备驱动的轮询等待队列和状态标志
wait_queue_head_t poll_wq_write
int full_flag
2,在探测函数probe初始化函数中初始化轮询等待队列
init_waitqueue_head(wait_queue_head_t * q)
3.实现设备驱动程序的POLL函数,设备驱动程序的POLL函数主要做两件事情;
(1)调用POLL函数,将当前进程加入到设备的轮询队列中;
(2)根据设备标志位返回设备的当前状态信息
如代码:
unsigned int mixled_poll(struct file *file, poll_table *wait)
{
unsigned int mask = 0;
poll_wait(file, &Elmixled_dev->poll_wq_write,wait );
if(1 == Elmixled_dev->full_flag )
{
// device have something to read
mask |= POLLIN;
}
return mask;
}
- poll查询
- poll()
- poll
- poll
- poll
- poll()
- poll
- poll
- POLL
- poll
- poll
- poll
- poll
- poll
- poll
- poll
- poll
- c tool系列------用poll函数查询IMEI
- java小算法—输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
- jsp采用bootstrap框架 tab页失效 解决方法
- 输入文件名-如果文件存在-读文件内容(Python)
- Ubuntu网络接口配置文件:nano/etc/network/interfaces 以及 Ifconfig只显示一个lo
- em 与 rem 的区别
- poll查询
- Linux多文件替换关键字
- Vue.js(慕课网学习笔记一)
- SpringMVC 静态资源&拦截器(interceptor and static resource) 笔记(七)
- kotlin 学习记录 基本语法 (2)
- 单片机系统的电磁兼容性设计的几大误区
- CentOS7网络配置——nmcli命令集
- 【库函数版本】基于STM32F103的MPU6050的原始数据读取程序详解
- JDK源码-CopyOnWriteArrayList.java 顺带 ArrayList Vector Collections.synchronizedList(List list)