在linux中断的上下文中运行用户线程

时间:2012-06-01 19:15:34

标签: c linux linux-kernel kernel linux-device-driver

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

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

有没有办法让它发挥作用。

由于

2 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:1)

创建一个sysfs条目就足够了,而不是制作一个字符驱动程序。您可以对该sysfs条目执行任何阻塞调用,例如read / select / poll,并从中断处理程序提供给它。

为您解决的有趣问题是

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