我正在将一些软件从使用物理硬件设备转换为完整的软件模拟,现在我正在研究中断处理部分。
当此代码驱动物理硬件时,它通过 请求 IRQ request_irq()
,现在我不再拥有物理设备,我将更改代码以使用“softirq”方法。
一个令人担忧的问题是,我看到软中断实际上只是必须等到调度程序调用它的事件。而硬件中断会导致正在运行的活动立即中断。这对我来说意味着,通过将我的代码转换为使用 softirqs 将导致原始代码中不存在的调度延迟。
我的理解正确吗?
无论如何我可以注册我的softirq以立即中断,就像硬件中断一样?
如果没有的话,无论如何要选择一个免费的硬件中断号并继续使用request_irq()
并“欺骗”它以为我正在运行一个硬件设备?