Linux设备驱动程序异步通知.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux设备驱动程序异步通知

《Linux内核及驱动开发》实验报告 实验序号: 实验项目名称:Linux设备驱动程序异步通知 学  号 123821048 姓  名 万健利 专业、班 12计本 实验地点 理工楼2栋 指导教师 邓树文 实验时间 实验目的 了解Linux设备驱动程序异步通知应用和驱动的编程方法。 实验设备(环境)及要求 虚拟机VMware 6.0.2 Linux 操作系统Ubuntu8.10 实验内容与步骤 (1)定义设备驱动程序的异步通知队列,代码如下 struct fasync_struct*fasync_queue; (2)实现设备驱动程序的异步操作函数fasync,在异步操作函数fasync中调用fasync_helper函数将当前进程添加到设备驱动程序的异步通知队列中,相关代码如下所示。 int mixled_fasync(int fd,struct file*file,int on) { printk(“enter mixled_fasync function!\n”); return fasync_helper(fd,file,Elmixled_dev-fasync_queue); } struct file_operations mixled_ops={ .fasync =mixled_fasync } 在设备驱动程序中,当检测到设备状态信息发生变化时,调用函数kill_fasync 向应用程序发生异步通知消息,相关代码: inqreturn_t mixled_isr(int irq,void*dev_id) { printk(“key interrupt take place!\n”); if(Elmixled_dev-fasync_queue) { kill_fasync(Elmixled_dev-fasync_queue,SIGIO,POLLMSG) } return IRO_HANDLED; } (4)在设备驱动程序的close函数中,调用mixled_fasync函数将当前进程从设备的异步通知队列中移除,相关代码如下。 mixled_fasync(-1,file,0) 四、试验结果 在设备驱动程序完成了以上的步骤之后,当设备程序检测设备状态信息发生变化时,就会向调用进程发送异步通知消息,应用程序收到异步通知消息后会做相应的处理。 五、实验总结 通过这次的实验了解到,在实际的应用开发过程中,当设备已经准备好,或用户按下某个按键时,我们希望设备能通知用户应程序来读取该设备的数据或者做相应的处理,这样应用程序就不需要一直查询该设备的状态,从而节约了资源。但是设备驱动程序在内核空间运行,应用程序在用户空间运行,二者不能直接通信。但是通过异步通知机制,当设备准备好或者状态改变时,可以及时通知应用程序做相应的处理。 六、教师评语 签名: 日期: 成绩 1

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档