Linux 异步通知
Linux 异步通知
阻塞和非阻塞方式都是采取应用程序主动读取数据的方式。最好的方式是驱动程序主动向应用程序发出通知,报告自己可以被访问,然后应用程序从驱动程序中读取或写入数据,类似于中断,这就需要使用异步通知这个机制来完成此功能。
异步通知使用信号通知,来模拟硬件上使用的中断,只不过信号是软件层面上的。
//信号处理函数
sighandler_t signal(int signum, sighandler_t handler)
//要设置处理函数的信号
signum
//信号的处理函数
handler
驱动层信号处理
1 定义fasync_struct结构体指针变量
2 在file_operations操作集中实现注册信号函数fasync()在file_operations操作集release函数中实现释放信号函数fasync_struct()
3 在驱动程序中编写需要发送的信号函数kill_fasync()
应用层信号处理
1 注册信号处理函数
sighandler_t signal(int signum, sighandler_t handler)
2 将本应用程序的进程号告诉内核
使用 fcntl(fd, F_SETOWN, getpid())将本应用程序的进程号告诉给内核。
3 开启异步通知
flags = fcntl(fd, F_GETFL); /* 获取当前的进程状态 */
fcntl(fd, F_SETFL, flags | FASYNC); /* 开启当前进程异步通知功能 */
Linux 异步通知相关推荐
- i.MX6ULL终结者Linux异步通知实验编写实验程序
文章目录 1 驱动程序编写 2 应用测试程序 3 运行测试 1 驱动程序编写 本实验例程路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/13_key_signal 驱动程序在key_po ...
- Linux 设备驱动中的 I/O模型(二)—— 异步通知和异步I/O
阻塞和非阻塞访问.poll() 函数提供了较多地解决设备访问的机制,但是如果有了异步通知整套机制就更加完善了. 异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态 ...
- linux编写驱动后write已杀死_《Linux4.0设备驱动开发详解》笔记--第九章:Linux设备驱动中的异步通知与同步I/O...
在设备驱动中使用异步通知可以使得对设备的访问可进行时,由驱动主动通知应用程序进行访问.因此,使用无阻塞I/O的应用程序无需轮询设备是否可访问,而阻塞访问也可以被类似"中断"的异步通 ...
- Linux内核中断引入用户空间(异步通知机制)【转】
转自:http://blog.csdn.net/kingdragonfly120/article/details/10858647 版权声明:本文为博主原创文章,未经博主允许不得转载. 当Linux内 ...
- Linux内核开发之异步通知与异步I/O《来自linux设备开发详解》
阻塞I/O意味着一直等待设备可访问再访问,非阻塞I/O意味着使用poll()来查询是否可访问,而异步通知则意味着设备通知应用程序自身可访问.(异步通知:很简单,一旦设备准备好,就主动通知应用程序,这种 ...
- 异步通知《来自Linux驱动程序开发实例》
您所在的位置:读书频道 > 操作系统 > Linux > 1.2.8 异步通知 1.2.8 异步通知 2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) 字号: ...
- 你真的懂Linux内核中的阻塞和异步通知机制吗?(花了五天整理,墙裂推荐!)
工科生一枚,热衷于底层技术开发,有强烈的好奇心,感兴趣内容包括单片机,嵌入式Linux,Uboot等,欢迎学习交流! 爱好跑步,打篮球,睡觉. 欢迎加我QQ1500836631(备注CSDN),一起学 ...
- linux. qt信号崩溃,【创龙AM4379 Cortex-A9试用体验】之I/O中断异步通知驱动程序+QT捕获Linux系统信号+测试信号通知...
2.驱动程序 安装字符设备驱动程序开发流程开发. 2.1资源定义 定义按键I/O端口号.I/O中断号,以及字符设备的主设备号变量: #define GPIO_KEY1_PIN_NUM (3*32 + ...
- linux驱动开发学习笔记二十一:异步通知
一.异步通知简介 我们首先来回顾一下"中断",中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数, ...
最新文章
- 官方教育网代理地址MSN
- $each $position $sort $slice
- spark MapOutputTrackerMaster
- 小米面试题:单词拆分
- 常见拒绝服务型攻击原理及行为特征
- oracle10 监听日志,windows 清空oracle的监听日志listener.log
- 顺序查找与二分查找算法
- LeetCode Algorithm 148. 排序链表
- 大话数据结构 :排序
- 从校内谈SNS-网络社区文化
- python布尔值使用_Python布尔值--True和False
- VMware更改虚拟机网卡的MAC地址
- 雷达信号处理-雷达应用
- 【节能学院】消防应急疏散指示系统在淞沪路-三门路项目的应用
- 百度富文本编辑器引入问题
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总...
- 955.WLB 不加班公司名单!再新增 5 家公司!
- maven常用中央仓库
- HTC-VIVE手势识别
- 【学习笔记】集合幂级数