2

我正在通过以下驱动程序的探测功能

/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);

但是我认为对于其他所有设备驱动程序来说都是正确的,那么为什么在这个特定的网络驱动程序的情况下呢?

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

4

1 回答 1

0

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

于 2015-07-08T08:44:10.003 回答