C语言 在 Linux 中断的上下文中运行用户线程



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

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

有没有办法让它工作。

谢谢

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

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

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

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

与其在

制作字符驱动程序时矫枉过正,不如制作一个 sysfs 条目就足够了。您可以执行任何阻塞调用,例如读取/选择/轮询该 sysfs 条目并从中断处理程序馈送到它。

要为您解决的有趣问题是

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

等。

最新更新