如何在按键中断后启动一个tasklet?

时间:2012-08-12 08:31:43

标签: linux linux-kernel embedded-linux kernel-module

我想构建一个内核模块,当有f5键击键时它将运行一个tasklet。

我了解如何初始化一个tasklet,但是如何在我的模块中获取该事件?如何使用request_irq确定是否按下f5

1 个答案:

答案 0 :(得分:1)

-

嗨,0x90,

我想你知道,要处理一个中断,有两个部分。 第一部分,上半部分,即中断处理程序, 第二部分,下半部分,可能是softirq,tasklet,work queue。

因此,即使你想在tasklet中实现你想要的所有东西,你也必须确保上半部分,即中断处理程序,有机会先运行。

IIRC,tasklet只是softirqs的变种,它们在irq_exit()中处理,在do_IRQ()中调用。但是,这种流程可能取决于具体的结构。

对于您的问题,我猜它可能在x86平台上。 无论按下什么键,总会有一个键盘中断传递给CPU。 无论按下的键是f5,都会在你的tasklet中检查,你的中断处理程序可能只需要将代码传递给tasklet。

因此,您应该通过调用request_irq()将您在tasklet之前处理的中断处理程序附加到键盘中断。

更新

正如Probie所说,您可能需要检查Documentation /目录中的notifier.txt和notifiers.txt。

感谢。