我正在编写一些定制的应用程序并允许更改linux内核中的中断处理程序代码。在linux中的中断环境中运行用户线程
我有一个正在等待中断发生的用户线程。如果发生中断,那么我想要做的第一件事就是执行该用户线程。
有什么办法可以使它工作。
感谢
我正在编写一些定制的应用程序并允许更改linux内核中的中断处理程序代码。在linux中的中断环境中运行用户线程
我有一个正在等待中断发生的用户线程。如果发生中断,那么我想要做的第一件事就是执行该用户线程。
有什么办法可以使它工作。
感谢
创建一个字符设备(也就是内核做什么,处理设备)。让用户线程从该设备读取。它会挂起,因为没有可读的字符。
当中断发生时,从模块向该设备输出一个字符(或一些有意义的消息)。线程将醒来,阅读消息并继续。
给处理程序线程一些很好的优先级,以便它提前醒来。
或者,您可能只需要等待select
或sleep
的线程并发送一个信号(内核函数kill_proc_info
),线程就会唤醒。确保线程处理信号。
而不是做一个字符驱动程序做一个矫枉过正的做一个sysfs入口就足够了。您可以执行任何阻塞调用,例如,读取/选择/轮询该sysfs条目并从中断处理程序反馈给它。解决
有趣的问题,你是
等
netlink呢? – John
目前,我睡在线程和实施的信号。如果我做了“轮询选择”,那么线程会在linux的同一个计时器中醒来吗?在Windows中,我可以安排一个dpc并在该线程中做事件通知。我不确定信号/选择是否同样有效。 –