我正在编写一些自定义的应用程序,并允许更改linux内核中的中断处理程序代码。
我有一个用户线程正在等待中断发生。如果发生中断,那么我要做的第一件事就是执行该用户线程。
有没有办法让它工作。
谢谢
创建一个字符设备(这就是内核所做的,处理设备)。从该设备读取用户线程。它将挂起,因为没有字符可供阅读。
当中断发生时,从模块向该设备输出一个字符(或一些有意义的消息)。线程将唤醒,阅读消息并继续。
给处理程序线程一些很好的优先级,以便它早点醒来。
或者,您可以让线程等待select
或sleep
并向其发送信号(内核函数 kill_proc_info
),线程将唤醒。确保线程处理信号。
制作字符驱动程序时矫枉过正,不如制作一个 sysfs 条目就足够了。您可以执行任何阻塞调用,例如读取/选择/轮询该 sysfs 条目并从中断处理程序馈送到它。
要为您解决的有趣问题是
- 万一在您已经在运行时发生另一个中断怎么办。
- 如果中断发生了两次,但你只被吵醒了一次怎么办?
等。