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 异步通知相关推荐

  1. i.MX6ULL终结者Linux异步通知实验编写实验程序

    文章目录 1 驱动程序编写 2 应用测试程序 3 运行测试 1 驱动程序编写 本实验例程路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/13_key_signal 驱动程序在key_po ...

  2. Linux 设备驱动中的 I/O模型(二)—— 异步通知和异步I/O

    阻塞和非阻塞访问.poll() 函数提供了较多地解决设备访问的机制,但是如果有了异步通知整套机制就更加完善了. 异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态 ...

  3. linux编写驱动后write已杀死_《Linux4.0设备驱动开发详解》笔记--第九章:Linux设备驱动中的异步通知与同步I/O...

    在设备驱动中使用异步通知可以使得对设备的访问可进行时,由驱动主动通知应用程序进行访问.因此,使用无阻塞I/O的应用程序无需轮询设备是否可访问,而阻塞访问也可以被类似"中断"的异步通 ...

  4. Linux内核中断引入用户空间(异步通知机制)【转】

    转自:http://blog.csdn.net/kingdragonfly120/article/details/10858647 版权声明:本文为博主原创文章,未经博主允许不得转载. 当Linux内 ...

  5. Linux内核开发之异步通知与异步I/O《来自linux设备开发详解》

    阻塞I/O意味着一直等待设备可访问再访问,非阻塞I/O意味着使用poll()来查询是否可访问,而异步通知则意味着设备通知应用程序自身可访问.(异步通知:很简单,一旦设备准备好,就主动通知应用程序,这种 ...

  6. 异步通知《来自Linux驱动程序开发实例》

    您所在的位置:读书频道 > 操作系统 > Linux > 1.2.8 异步通知 1.2.8 异步通知 2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) 字号: ...

  7. 你真的懂Linux内核中的阻塞和异步通知机制吗?(花了五天整理,墙裂推荐!)

    工科生一枚,热衷于底层技术开发,有强烈的好奇心,感兴趣内容包括单片机,嵌入式Linux,Uboot等,欢迎学习交流! 爱好跑步,打篮球,睡觉. 欢迎加我QQ1500836631(备注CSDN),一起学 ...

  8. linux. qt信号崩溃,【创龙AM4379 Cortex-A9试用体验】之I/O中断异步通知驱动程序+QT捕获Linux系统信号+测试信号通知...

    2.驱动程序 安装字符设备驱动程序开发流程开发. 2.1资源定义 定义按键I/O端口号.I/O中断号,以及字符设备的主设备号变量: #define GPIO_KEY1_PIN_NUM (3*32 + ...

  9. linux驱动开发学习笔记二十一:异步通知

    一.异步通知简介 我们首先来回顾一下"中断",中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数, ...

最新文章

  1. 官方教育网代理地址MSN
  2. $each $position $sort $slice
  3. spark MapOutputTrackerMaster
  4. 小米面试题:单词拆分
  5. 常见拒绝服务型攻击原理及行为特征
  6. oracle10 监听日志,windows 清空oracle的监听日志listener.log
  7. 顺序查找与二分查找算法
  8. LeetCode Algorithm 148. 排序链表
  9. 大话数据结构 :排序
  10. 从校内谈SNS-网络社区文化
  11. python布尔值使用_Python布尔值--True和False
  12. VMware更改虚拟机网卡的MAC地址
  13. 雷达信号处理-雷达应用
  14. 【节能学院】消防应急疏散指示系统在淞沪路-三门路项目的应用
  15. 百度富文本编辑器引入问题
  16. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总...
  17. 955.WLB 不加班公司名单!再新增 5 家公司!
  18. maven常用中央仓库
  19. HTC-VIVE手势识别
  20. 【学习笔记】集合幂级数

热门文章

  1. MyBatis 原理
  2. Spring Boot 特性
  3. mysql记录是乱码_mysql查询数据库导致中文乱码
  4. python代码中添加环境变量
  5. 平衡二叉树(AVL)python实现
  6. 用计算机听音乐和看电影的ppt,五年级下册信息技术课件-第六课 用计算机听音乐和看电影 川教版 (共13张PPT)...
  7. 客制化键盘编程_开学在即,国产机械键盘怎么选
  8. 2019 牛客多校第一场 E ABBA
  9. 关于机器学习的最佳科普文章:《从机器学习谈起》
  10. Java爬虫系列二:使用HttpClient抓取页面HTML