一、应用程序——信号的接收
1、自定义信号处理函数,参数为所接收的信号值
2、绑定信号与信号处理函数
3、有的设备文件须如下设置方能发送信号(如输入流文件STDIN_FILENO)
设置文件拥有者为本进程
设置文件支持FASYNC异步通知模式
有的设备不需要(如键盘)
二、驱动程序——信号的发送
1、当文件属性改为FASYNC异步通知模式时,就会调用驱动程序中的fasync()操作来将设备文件添加到异步通知列表中(该操作中的fasync_helper()就是处理FASYNC标志变更的),即生成一个fasync_struct结构体并插入异步通知列表中,然后将异步结构体指针指向它
2、驱动程序通过kill_fasync释放信号给应用程序,实现异步通知
3、可通过globalfifo_fasync(-1,filp,0)把异步通知结构体从异步通知列表中删除
三、AIO系列API
1、intaio_read(struct aiocb *)请求一个异步读操作
2、intaio_write(struct aiocb *)请求一个异步写操作
3、intaio_error(struct aiocb *)确定请求状态
4、ssize_taio_return(struct aiocb *)获取传输的字节数
5、intaio_suspend(const struct aiocb *,int,const struct timespec*)挂起(或阻塞)调用进程
6、intaio_cancel(int,struct aiocb *)取消某个请求
7、intlio_listio(int,struct aiocb *,int,struct sigevent *)一次启用大量I/O操作
structaiocb{
aio_buf;
aio_fildes;
aio_nbytes;
aio_offset;
}
一个这样的结构体代表着一个I/O操作请求
四、异步通知——驱动程序
异步I/O——应用程序
1、使用信号作为AIO的通知
2、使用回调函数作为AIO的通知
五、1、在用户空间验证globalfifo的异步通知
2、使用信号作为AIO的通知
(1)设置AIO请求
(2)设置sig_act(signal和处理函数)
(3)链接AIO请求和signal
3、使用回调函数作为AIO的通知
(1)设置AIO请求
(2)链接AIO请求和回调函数
六、1、/proc/sys/fs/aio-nr
异步IO请求现有数目
2、/proc/sys/fs/aio-max-nr
异步IO请求最大数目
七、1、在内核中,每一个I/O请求都有对应的一个kiobc结构体
2、字符设备驱动程序中,file_operation包含3个与AIO有关的成员函数
*aio_read() *aio_write() *aio_fasync()
3、应用程序中的aio_read()和aio_write()函数本身不一定完成了读写操作,只是发起初始化读和写操作
八、设备驱动中的异步I/O函数
分享到:
相关推荐
本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...
VC++深入详解学习笔记 1 Lesson1: Windows程序运行原理及程序编写流程 1 Lesson2: 掌握C++基本语法 6 Lesson3: MFC框架程序剖析 7 Lesson4: 简单绘图 9 Lesson5: 文本编程 12 Lesson6: 菜单编程 15 Lesson7: 对话框...
学习笔记(持续更新) 验证你是否真正掌握一个知识的最好方法,就是看你能否用直白浅显的语言把复杂深奥的问题和知识讲清楚 -- 费曼技巧「以教为学」 大纲 前端杂记 策略模式 发布订阅者模式 责任链模式(todo) 0.1...
在学习koa2的时候遇到了获取数据后再进行模板渲染的异步问题。在查找各种资料后成功的解决了该问题,现在写个笔记记录一下。 先说一下async、await,第一次见到这两个词是在学习vue的时候。因为前端在写代码的时候...
CAN协议与其它现场总线协议的区别中有一个是:它使用同步数据传输而不是异步传输(面向字符)。这意味着传输性能得到更有效的发挥,但是另一方面,这需要更加复杂的位同步方法。
本文介绍了webpack学习笔记之代码分割和按需加载的实例详解,分享给大家,也给自己留个笔记 为什么需要代码分割和按需加载 代码分割就是我们根据实际业务需求将代码进行分割,然后在合适的时候在将其加载进入文档中...
float 32bit, 9位有效数字,含小数(四舍五入)(小数点算一位,正负号不算) double 64bit, 18位有效数字 注:float 和 double 的小数部分不可能精确,只能近似。 比较小数时,用 double i=0.01; if ( i - 0.01 ...
VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...
WinInet编程中如何使用异步 winInet_API浅谈 Wininet详解 WinInet中的几个网络函数 WinInet学习笔记 异步下载类 等等
在异步应用程序中发送和接收信息时,常见的可以选择以纯文本和XML作为数据格式(可参考《jQuery学习笔记之Ajax用法实例详解》),现在还有一种比较流行的方式:JSON(JavaScript Object Notation)。好了,下面举例...
这两天学习了vue-resource插件个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记。 Vue可以构建一个完全不依赖后端服务的应用,同时也可以与服务端进行数据交互来同步界面的动态更新。 Vue通过插件的形式...
同步通信与异步通信区别 SPI总线的特点工作方式以及常见错误解析 USB与串口的区别简要总结 二、信号调制技术方式 5G系统物理层的信道调制技术 调制信号和载波的关系介绍 工程师必须了解的IQ信号和调制知识 浅谈...
ext学习笔记一 小试iBatis RIA(Rich Internet Application)的现状和未来 Java应用中域名解析不过期的解决方法 Java编程那些事儿45—数组使用示例1 一步步熟悉OFBiz 用Java做客户端调用.NET写...
所以,我把自己的学习笔记整理出来了,希望对大家有用。 本文不是初级教程,针对的读者是那些已经具备jQuery使用经验的开发者。如果你想了解jQuery的基本用法,请阅读我编写的《jQuery设计思想》和《jQuery最佳实践...
struts2使用Dwr实现Ajax异步提交信息的使用步骤和配置详解。