linux .ko中针对多个设备的全局变量

时间:2016-05-09 03:20:23

标签: c linux linux-kernel driver

我有一个用于嵌入式Linux系统的Wi-Fi驱动程序(.ko文件),我的主板上有两个相同的Wi-Fi设备。将.ko文件存入内核后,系统可以驱动这两个Wi-Fi设备。

我的问题是:如果驱动程序的源代码包含全局变量(和静态变量),这两个设备是否共享同一组变量?或者,每个设备将有两个驱动程序实例?

谢谢!

2 个答案:

答案 0 :(得分:5)

Linux内核模块链接到内核中与C中通常的任何文件相同。如果它们具有全局变量,则每个全局变量只有一个副本。他们甚至可以使用其他模块中的全局变量。

答案 1 :(得分:3)

单个驱动程序支持多个设备是正常的。

虽然某些模块的变量在不同设备之间共享,但大多数变量都存储在设备特定结构中。

当为设备“A”调用驱动程序的函数时,它接受指向设备特定结构“data-A”的指针。使用该指针,该函数提取“A”的参数。当为设备“B”调用相同的函数时,它接受指向另一个设备特定结构“data-B”的指针。