我有一个用于嵌入式Linux系统的Wi-Fi驱动程序(.ko文件),我的主板上有两个相同的Wi-Fi设备。将.ko文件存入内核后,系统可以驱动这两个Wi-Fi设备。
我的问题是:如果驱动程序的源代码包含全局变量(和静态变量),这两个设备是否共享同一组变量?或者,每个设备将有两个驱动程序实例?
谢谢!
答案 0 :(得分:5)
Linux内核模块链接到内核中与C中通常的任何文件相同。如果它们具有全局变量,则每个全局变量只有一个副本。他们甚至可以使用其他模块中的全局变量。
答案 1 :(得分:3)
单个驱动程序支持多个设备是正常的。
虽然某些模块的变量在不同设备之间共享,但大多数变量都存储在设备特定结构中。
当为设备“A”调用驱动程序的函数时,它接受指向设备特定结构“data-A”的指针。使用该指针,该函数提取“A”的参数。当为设备“B”调用相同的函数时,它接受指向另一个设备特定结构“data-B”的指针。