我想建立一个内核模块,它将运行一个微线程时,有一个按键的f5键。
我知道如何初始化微线程,但是如何在模块中获取事件呢?如何使用request_irq确定是否按下了f5?
发布于 2012-08-13 09:24:56
-
嗨,0x90,
我想您知道,要处理中断,有两个部分。第一部分,上半部分,即中断处理程序,第二部分,下半部分,可以是softirq,微线程,工作队列。
因此,即使你想在一个微线程中实现你想要的所有东西,你也必须确保上半部分,中断处理程序,有机会首先运行。
微线程只是软中断的一种变体,它们在do_IRQ()中调用的irq_exit()中处理。但是,这一流程可能取决于特定的架构。
关于你的问题,我猜可能是在x86平台上。无论按下什么键,总会有一个键盘中断传递给CPU。并且是否按下的键是f5,将在你的微线程中检查,你的中断处理程序可能只需要将代码传递给微线程。
因此,您应该通过调用request_irq()将在微线程之前处理的中断处理程序附加到键盘中断。
更新:
正如Probie所说,您可能希望检查Documentation/目录中的notifier.txt和notifiers.txt。
谢谢。
https://stackoverflow.com/questions/11920841
复制相似问题