为什么在连接ISR之前全局禁用中断?

时间:2015-03-13 15:14:57

标签: linux-kernel linux-device-driver interrupt-handling smp

我正在浏览以下驱动程序的探测功能

/drivers/net/ethernet/smsc/smsc911x.c

在探测功能中,它被评论为

/* Ensure interrupts are globally disabled before connecting ISR */

    smsc911x_disable_irq_chip(dev);

    retval = request_irq(dev->irq, smsc911x_irqhandler,
                         irq_flags | IRQF_SHARED, dev->name, dev);

但是我不认为在其他所有设备驱动程序中都是TRUE,那么为什么会出现这种特殊的网络驱动程序呢?

为什么在连接ISR之前全局禁用中断?

1 个答案:

答案 0 :(得分:0)

评论说全局禁用中断;但是在下面的函数调用中,仅对设备smsc驱动程序附加的中断禁用。这通常是为了避免在驱动程序准备处理中断之前很好地获得中断。由于这是用于以太网驱动程序,因此在接口启动期间最有可能启用中断。 有问题的代码片段在模块加载期间执行,这在接口之前就已经完成了。