Linux驱动开发之八-----按键驱动(异步通知机制)
来源:互联网 发布:java中的移位运算 编辑:程序博客网 时间:2024/05/21 11:33
在Linux下,异步通知类似于信号机制,内核和应用程序之间采用通知方法来告知是否发生对应的事件,并进一步采取相应的动作,当产生按键动作时,发生中断,由驱动程序使用kill_fasync函数告知应用程序,而应用程序需要向内核提供PID,然后就可以工作了。
驱动fasync接口实现:
int buttons_fasync(int fd, struct file *filp, int on){return fasync_helper(fd, filp, on, &but_fasync);}在中断处理程序中调用kill_fasync函数:
//中断处理程序,记录按键按下的次数,并置标志位为1,唤醒等待队列上等待的进程static irqreturn_t buttons_interrupt(int irq,void *dev_id){struct button_irq_desc *temp = (struct button_irq_desc *)dev_id;key_val = (unsigned char)(temp->number+1);ev_press = 1;//表示中断发生了wake_up_interruptible(&buttons_waitq);//当有按键被按下时驱动程序通知应用程序kill_fasync(&but_fasync,SIGIO, POLL_IN);return IRQ_RETVAL(IRQ_HANDLED);}应用程序告知内核其PID并调用fasync函数
fcntl(fd,F_SETOWN,getpid());//把当前进程的ID号告诉驱动程序Oflag = fcntl(fd,F_GETFL);fcntl(fd,F_SETFL,Oflag | FASYNC);//设置异步通知标志,调用fasync编译并下载运行截图如下:
0 0
- Linux驱动开发之八-----按键驱动(异步通知机制)
- Linux驱动开发八:按键中断+poll机制+异步通知机制+信号量及阻塞标志
- 嵌入式linux之按键驱动,异步通知
- linux字符驱动之异步通知按键驱动
- linux字符驱动之异步通知按键驱动
- linux字符驱动之异步通知按键驱动
- linux字符驱动之异步通知按键驱动
- linux字符驱动之异步通知按键驱动
- linux设备驱动开发-异步通知机制
- Linux驱动开发七:按键中断+poll机制+异步通知机制
- 按键驱动深化-异步通知机制
- 基于异步通知机制的按键驱动
- linux 驱动异步通知机制
- 【Linux 驱动】异步通知机制
- 按键驱动的恩恩怨怨之异步通知
- linux 驱动之异步通知
- linux驱动之异步通知
- linux驱动的异步同步通知机制
- DeepLearning(深度学习)原理与实现(一)
- 杨氏矩阵查找
- cocos2d-x 之 CocosBuilder 之文章收集 (不断更新)(2014.4.2更新)
- oracle中的删除用户及表
- 黑马程序员_学习笔记第8天——多态
- Linux驱动开发之八-----按键驱动(异步通知机制)
- 用友U8如何解除单据的锁定
- CheckStyle检查项目分布图
- 使用dbutils工具向数据库中存储大数据
- ASCII Unicode和UTF-8
- LeetCode 之 Construct Binary Tree from Inorder and Postorder Traversal
- 计数排序
- QML--学习第二篇
- 黑马程序员_泛型详解