获取此模块的struct device指针?

时间:2015-03-09 07:31:15

标签: kernel driver linux-device-driver

有没有办法获得指向" struct device"对于内核驱动程序中的当前模块?

2 个答案:

答案 0 :(得分:2)

在Linux设备驱动程序模型(LDDM)中,使用第一个参数作为设备调用内核驱动程序的probe方法。但是第一个参数的类型取决于您为其编写驱动程序的设备类。

例如,UART平台设备驱动程序将具有int (*probe)(struct platform_device *);

因此,第一个参数platform_device是LDDM的标准struct device结构的包装器,它将指向底层硬件检测到的当前设备。

如果您的内核模块驱动程序支持多个设备,那么您可能希望在全局驱动程序私有变量(声明为静态以保护其他内核驱动程序)中维护所有struct device结构或指向这些结构的指针的链接列表模块访问此链接列表并破坏您的设备操作。)

答案 1 :(得分:1)

没有。没有关于当前设备"的概括概念。在一个模块中。模块只是一种动态添加代码到内核的方法。它不一定包含(仅)单个设备驱动程序,甚至根本不包含设备驱动程序 - 尽管这是它最常见的功能。

您可以自由声明自己的全局变量,该变量指向您选择的结构设备。