2

我正在编写一些自定义应用程序并允许更改 linux 内核中的中断处理程序代码。

我有一个正在等待中断发生的用户线程。如果发生该中断,那么我要做的第一件事就是执行该用户线程。

有没有办法让它工作。

谢谢

4

2 回答 2

6

创建一个字符设备(这就是内核所做的,处理设备)。让用户线程从该设备读取。它将挂起,因为没有要读取的字符。

当中断发生时,从您的模块向该设备输出一个字符(或一些有意义的消息)。线程将唤醒,阅读消息并继续。

给处理程序线程一些不错的优先级,以便它早点醒来。

或者,您可能只是让线程等待selectsleep向其发送信号(内核函数kill_proc_info),然后线程将唤醒。确保线程处理信号。

于 2012-06-01T20:21:18.080 回答
1

与其在制作字符驱动程序方面做得过大,不如制作一个 sysfs 条目就足够了。您可以执行任何阻塞调用,例如读取/选择/轮询该 sysfs 条目并从您的中断处理程序提供给它。

为您解决的有趣问题是

  1. 如果您已经在运行时发生另一个中断怎么办。
  2. 如果中断发生了两次,但你只被唤醒了一次怎么办。

等等

于 2012-06-03T19:09:21.160 回答