嵌入式Linux&Android开发-异步通知

本文介绍了嵌入式Linux和Android开发中的异步通知机制,该机制允许驱动程序主动通知应用程序数据可读取。文章详细阐述了实现异步通知的流程,包括驱动程序中需支持F_SETOWN和F_SETFL命令,实现fasync()函数,并在资源可用时调用kill_fasync()触发信号。同时,提到了驱动和应用程序在异步通知处理过程中的交互关系。
摘要由CSDN通过智能技术生成

目录

 

一、异步通知简介

二、实现流程


一、异步通知简介

在前面使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过poll函数不断的轮询。最好的方式就是驱动程序能主动向应用程序发出通知,报告自己可以访问,然后应用程序在从驱动程序中读取或写入数据。Linux提供了异步通知这个机制来完成此功能。

为了使设备支持异步通知机制,驱动程序中涉及 3 项工作:

  1. 支持 F_SETOWN 命令,能在这个控制命令处理中设置 filp->f_owner 为对应进程 ID。不过此项工作已由内核完成,设备驱动无需处理。
  2. 支持 F_SETFL 命令的处理,每当 FASYNC 标志改变时,驱动程序中的 fasync()函数将得以执行。因此,驱动中应该实现 fasync()函数。
  3. 在设备资源可获得时,调用 kill_fasync()函数激发相应的信号。

驱动中的上述 3 项工作和应用程序中的 3 项工作是一一对应的,如图所示为异步通知处理过程中用户空间和设备驱动的交互:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值