底层硬件驱动如何调用应用层的回调函数,求指点!

时间:2021-08-07 20:32:37

各位高手,有一个问题实在不知道怎么处理比较合适,求高手指点。

    我在arm上做了一个驱动,驱动的任务是把底层控制信道的数据和语音数据分别传到应用层,然后再由应用层将数据通过网络发送出去。使用的是linux 2.6的内核。

   这个时候我想使用一个专门的线程对驱动进行轮询,若发现有数据上来后则调用我自己写的回调函数来处理。但是这样感觉轮询效率比较低,也不是个办法,因此想使用中断的方式,不过linux下如何使用中断来通知上层应用程序呢?

   望高人指点一二,谢谢了啊。

1 个解决方案

#1


我觉得是这样的:轮询方式并不是效率低,而是白白消耗CPU。如果ARM的板子就是为了这个事情处理的,我觉得轮询是可以接受的。

如果考虑尽量少消耗CPU,可以有两个方案:

1、是在驱动里面加一个消息。上层采用阻塞调用的方式去读消息,有消息了再轮询。

2、用软中断。参考:http://blog.csdn.net/sagacity789/article/details/6430199



#1


我觉得是这样的:轮询方式并不是效率低,而是白白消耗CPU。如果ARM的板子就是为了这个事情处理的,我觉得轮询是可以接受的。

如果考虑尽量少消耗CPU,可以有两个方案:

1、是在驱动里面加一个消息。上层采用阻塞调用的方式去读消息,有消息了再轮询。

2、用软中断。参考:http://blog.csdn.net/sagacity789/article/details/6430199