gpt4 book ai didi

c - Linux 中的软与硬中断处理时序

转载 作者:太空狗 更新时间:2023-10-29 12:19:55 26 4
gpt4 key购买 nike

我正在将一些软件从使用物理硬件设备转换为完整的软件模拟,现在我正在研究中断处理部分。

当此代码驱动物理 HW 时,它通过 request_irq() 请求 IRQ,现在我不再拥有物理设备,我将更改代码以使用“softirq”方法。

关于一点,我看到软中断实际上只是必须等到它被调度程序调用的事件;而硬件中断会导致正在运行的事件立即中断。这对我来说意味着通过将我的代码转换为使用 softirqs 将导致原始代码中不存在的调度延迟。

我的理解对吗?
无论如何,我可以注册我的软中断以像硬件中断那样立即中断吗?
如果没有,是否可以选择一个免费的 HW irq 号并继续使用 request_irq() 并“欺骗”它认为我正在运行一个 HW 设备?

最佳答案

您可以在用户模式代码或内核模式代码中引发异常(通过额外的系统调用或驱动程序),并且在内核中有一个专门的异常处理程序来将此异常转换为模拟中断。异常通常会立即处理,至少由 CPU 处理,类似于外部硬件中断。我对 Linux 内部知识的了解还不够多,无法准确地告诉您如何完成此操作,但它必须是可行的。我敢肯定,它可以在 x86 上运行。

关于c - Linux 中的软与硬中断处理时序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12821295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com