下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 Linux_设备驱动程序之异步通知_AIO_驱动讲解

Linux_设备驱动程序之异步通知_AIO_驱动讲解.doc

Linux_设备驱动程序之异步通知_AIO_驱动讲解

Hunter军平
2019-06-11 0人阅读 举报 0 0 暂无简介

简介:本文档为《Linux_设备驱动程序之异步通知_AIO_驱动讲解doc》,可适用于职业岗位领域

Linux设备驱动程序之异步通知AIO驱动讲解::|分类:Linux学习笔记|标签:|举报|字号大中小订阅“小王呢,今天开始讲AIO与设备驱动,这也是设备驱动通知与异步IO的最后一节了,下次咱们就要开始讲更高级的东西,比如中断啦,时钟等”在Linux内核中,每个IO请求都对应一个kiocb结构体,其kifilp成员指向对应的file指针,通过issynckiocb可以判断某Kiocb时候为同步IO请求,如果非真,表示是异步IO请求。块设备和网络设备本身就是异步的。只有字符设备驱动必须明确指出应支持AIO需要说明的是AIO对于大多数字符设备而言都不是必须的。只有少数才需要。在字符设备驱动程序中,fileoperations包含了个和AIO相关的函数。如下:ssizet(*aioread)(structkiocb*iocb,char*buffer,sizetcount,lofftoffset)ssizet(*aiowrite)(structkiocb*iocb,constchar*buffer,sizetcount,lofftoffset)int(*aiofsync)(structkiocb*iocb,intdatasync)aioread()和aiowrite()与fileoperation中的read()和write()中的offset参数不同,它直接传递值,而后者传递的是指针。这两个函数本身也不一定完成读写操作,它只是发起,初始化读写操作。下面来看看实际的代码部分:异步读staticssizetxxxaioread(structkiocb*iocb,char*buffer,sizetcount,lofftoffset){returnxxxdeferop(,iocb,buf,count,pos)}异步写staticssizetxxxaiowrite(structkiocb*iocb,constchar*buffer,sizetcount,lofftoffset){returnxxxdeferop(,iocb,(char*)buf,count,pos)}初始化异步IOstaticintxxxdeferop(intwrite,structkiocb*iocb,char*buf,sizetcount,lofftpos){structasyncwork*asyncwkintresult当可以访问buffer时进行复制if(write){result=xxxwrite(iocb>kifilp,buf,count,pos)}else{result=xxxread(iocb>kifilp,buf,count,pos)}如果是同步IOCB,立即返回状态if(issynckiocb(iocb))returnresutl否则,推后几us执行asyncwk=kmalloc(sizeof(*asyncwk),GFPKERNEL))if(asyncwk==)returnresultasyncwk>aiocb=iocbasyncwk>result=resultINITWORK(asyncwk>work,xxxdodeferredop,asyncwk)scheduledelayedwork(asyncwk>work,HZ)returnEIOCBOUEUED控制权限返回给用户空间}延迟后执行staticvoidxxxdodeferredop(void*p){structasyncwork*asyncwk=(structasyncwork*)paiocomplete(asyncwkiocb,asyncwk>result,)kfree(asyncwk)}在上述代码中有一个asyncwork的结构体定义如下:structasyncwork{structkiocb*iocbkiocb结构体指针intresult执行结果structworkstructwork工作结构体}在上边代码中最核心的是使用ayncwork结构体将操作延迟,通过scheduledelayedwork可以调度其运行,而aiocomplete的调用用于通知内核驱动程序已经完成了操作。最后,这一大章的内容都讲完了,一连节,小王,你好好整理整理,下次就要开始新的内容了。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/5

Linux_设备驱动程序之异步通知_AIO_驱动讲解

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利