【发布时间】:2014-03-14 17:50:15
【问题描述】:
我只是通过下面的线程,它说内核头不想将 irq 暴露给模块。
Accessing IRQ description array within a module and displaying action names
但我不知道为什么会这样?
另外,我看到一些驱动程序不使用 irq 的,这是否意味着这些设备不是中断驱动的?
这样的驱动程序之一是用于 lm73 传感器 linux/drivers/hwmon/lm73.c,它主要绑定到 i2c 总线并且再次是一个模块。
那么,这一切是如何发生的,设备如何选择不被中断驱动?
【问题讨论】:
-
lm73 只是插在 i2c 子系统之上,而 i2c 驱动程序(其中有许多不同的变体)很可能是中断驱动的。
-
@nos 但是设备也应该有一些方法来中断它的总线。不是这样吗?
-
也许吧。这取决于子系统。如果您正在编写一个位于 i2c 层之上的模块,您宁愿调用 i2c 层定义的函数。而且,如果需要,该层将负责处理总线,无论是否需要中断。这样你就不会被绑定到任何特定的 i2c 芯片。 lm73模块就是这种情况,它是i2c总线远端传感器的驱动程序,它不需要知道i2c总线的本地端是如何工作的,只要它可以发送消息到另一端。
-
感谢@nos 制作了这个有价值的 cmets 。如果您可以将其添加为 lm73 上的答案和图片视图,这将非常有帮助,就像驱动程序从远程端与 i2c 总线通信一样。
-
ok @nos,没问题。
标签: c linux-kernel linux-device-driver