【嵌入式Linux驱动开发】十七、深入学习异步通知,了解按键驱动的另一种方式

本文深入探讨Linux驱动开发中的异步通知机制,介绍了如何利用信号实现驱动主动通知应用程序。主要内容包括异步通知简介、驱动中的信号处理函数(如fasync_struct、fasync函数和kill_fasync函数)以及应用程序对异步通知的处理步骤。同时,提供了驱动程序和应用程序的编写示例。
摘要由CSDN通过智能技术生成

  败而不馁胜不娇,傲骨凛凛硬似刀。
  富贵不能淫正气,贫贱不能移志高。
  威武不能屈气节,八面寒风不折腰。
  人中白鹤百世敬,竹节清清入云宵。


一、异步通知深入

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

1.1、异步通知简介

  首先来回顾一下“中断”,中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数,在中断服务函数中做具体的处理。比如 GPIO 按键中断,通过按键去开关蜂鸣器,采用中断以后处理器就不需要时刻的去查看按键有没有被按下,因为按键按下以后会自动触发中断。同样的, Linux 应用程序可以通过阻塞或者非阻塞这两种方式来访问驱动设备,通过阻塞方式访问的话应用程序会处于休眠态,等待驱动设备可以使用,非阻塞方式的话会通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReCclay

如果觉得不错,不妨请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值