gpt4 book ai didi

c - C 代码的中断处理

转载 作者:行者123 更新时间:2023-11-30 15:37:11 25 4
gpt4 key购买 nike

我试图通过 C 代码禁用中断,但卡在 request_irq() 处。 request_irq() 的一个参数是 flag,而 SA_INTERRUPT 标志现已弃用。谁能告诉我SA_INTERRUPT的替代方案?我使用的是内核版本 3.8。

除了 request_irq() 之外,还有其他方法可以禁用中断吗?

最佳答案

request_irq() 不会“禁用”中断。它由想要将中断服务例程附加到 IRQ 的驱动程序调用。如果中断是共享的,则该标志为 IRQF_SHARED,否则为 0。

以下是 Realtek 8169 PCIe 网络适配器驱动程序的示例:http://lxr.free-electrons.com/source/drivers/net/ethernet/realtek/r8169.c

 retval = request_irq(pdev->irq, rtl8169_interrupt,
(tp->features & RTL_FEATURE_MSI) ? 0 : IRQF_SHARED,
dev->name, dev);

在上面的示例中,rtl8169_interrupt 是每次引发 IRQ 时都会调用的中断服务例程 (ISR)。

ISR 的工作是查明中断是否确实是由“拥有的”设备触发的(与共享中断相关),然后如果设备确实触发了中断,ISR 会读取中断状态,然后清除中断。

关于c - C 代码的中断处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22293294/

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