Linux内核模块、设备驱动与BusyBox使用指南
1. 设备中断线探测
内核提供了一对函数来帮助确定设备连接到哪个中断线,这在kernel_probe()函数(从第276行开始)中有说明:
-probe_irq_on():返回当前未分配中断的位掩码。该函数保存返回值,然后安排设备生成一个中断。
-probe_irq_off():接收probe_irq_on()返回的掩码值作为参数,返回一个表示在调用probe_irq_on()后生成的中断的数字。如果没有中断发生,返回0;如果发生多个中断(模糊情况),返回负数。
还有一种“自己动手”的探测方法,在self_probe()函数(从第322行开始)中展示。它是上述内核辅助方法的一种变体,根据输出位和可跳线的输入中断的可能组合,我们知道哪些中断是可能的,因此将探测中断处理程序附加到任何空闲的中断上,然后安排生成一个中断并观察结果。
实践操作
按照图12.4安装跳线插头。simple_int.ko应该已经通过构建simple_hw.ko的相同make命令构建好了。在simple_hw/目录下以root用户身份执行以下命令:
1. 如果simple_hw当前已加载,执行./hw_unload