【发布时间】:2021-01-11 10:27:46
【问题描述】:
我在 pci 设备驱动程序中看到了这一行
module_pci_driver(cp_driver);
但在其他 pci 设备驱动程序中
module_init(rtl8139_init_module);
在不同驱动程序的驱动程序.c 文件末尾找到的两行
我知道的是:我可以用__init 创建一个pci 设备驱动程序,但我也可以不用__init 创建一个pci 设备驱动程序
即 [Realtek 以太网在 Linux 源码中有两个驱动
1) 139cp.c(没有__init)
2) 8139too.c 与__init]。
我认为两者之间的主要区别只是,如果我必须在使用insmod 命令加载驱动程序模块后立即使用 pci 设备驱动程序,那么我使用带有__init 的设备驱动程序的实现。
问题
相反,如果我只是想加载pci设备驱动而不使用它,那我应该用module_pci_driver()创建一个pci设备驱动(所以不需要添加__init)?它有什么作用(module_pci_driver)?它与带有__init的pci驱动程序有何不同@
我想知道我可能有误解,请任何人澄清。当我使用insmod 命令加载驱动程序时,这两种驱动程序的probe 功能是否也会运行?什么时候?如果是,那么有什么区别,因为大多数设备配置都是在问题功能中完成的
总结一下
当使用 module_pci_driver(cp_driver); 在驱动程序中进行初始化时,因为它们没有实现__init。用了什么命令
【问题讨论】:
标签: linux initialization device-driver pci