linux.ko 中用于多个设备的全局变量
Global variables in linux .ko for multiple devices
我有一个用于嵌入式 Linux 系统的 Wi-Fi 驱动程序(一个 .ko 文件),我的板上有两个相同的 Wi-Fi 设备。将.ko文件insmod-ing到内核后,系统就可以驱动这两个Wi-Fi设备了。
我的问题是:如果驱动程序的源代码中包含全局变量(和静态变量),这两个设备是否共享同一组变量?或者,每个设备将有两个驱动程序实例?
谢谢!
Linux 内核模块被链接到内核中,就像任何文件通常在 C 中一样。如果它们有全局变量,则每个全局变量只有一个副本。他们甚至可以使用来自其他模块的全局变量。
单个驱动支持多个设备是正常的。
虽然一些模块的变量在不同的设备之间共享,但大多数变量存储在设备特定的结构中。
当为设备 "A" 调用驱动程序函数时,它接受指向设备特定结构 "data-A" 的指针。使用此指针,函数提取 "A" 的参数。当为设备 "B" 调用相同的函数时,它接受指向 另一个 设备特定结构 "data-B".
的指针
我有一个用于嵌入式 Linux 系统的 Wi-Fi 驱动程序(一个 .ko 文件),我的板上有两个相同的 Wi-Fi 设备。将.ko文件insmod-ing到内核后,系统就可以驱动这两个Wi-Fi设备了。
我的问题是:如果驱动程序的源代码中包含全局变量(和静态变量),这两个设备是否共享同一组变量?或者,每个设备将有两个驱动程序实例?
谢谢!
Linux 内核模块被链接到内核中,就像任何文件通常在 C 中一样。如果它们有全局变量,则每个全局变量只有一个副本。他们甚至可以使用来自其他模块的全局变量。
单个驱动支持多个设备是正常的。
虽然一些模块的变量在不同的设备之间共享,但大多数变量存储在设备特定的结构中。
当为设备 "A" 调用驱动程序函数时,它接受指向设备特定结构 "data-A" 的指针。使用此指针,函数提取 "A" 的参数。当为设备 "B" 调用相同的函数时,它接受指向 另一个 设备特定结构 "data-B".
的指针