小编典典

为什么除了init之外,Linux设备驱动程序还需要探测方法?

linux

在linux内核中,probe()驱动程序提供的方法有什么作用?它与驾驶员的init功能有何不同,即为什么不能probe()在驾驶员的init功能中执行功能动作?


阅读 243

收藏
2020-06-03

共1个答案

小编典典

不同的设备类型可以具有probe()函数。例如,PCI和USB设备都具有probe()函数。

如果您在谈论PCI设备,我建议您阅读Linux设备驱动程序的第12章,其中涵盖了驱动程序初始化的这一部分。第13章介绍了USB。

简短的回答,假设使用PCI:驱动程序的init函数调用pci_register_driver(),该函数将向内核提供其可以服务的设备列表以及指向该probe()函数的指针。然后,内核probe()为每个设备调用一次驱动程序的功能。

此探测功能将启动每个设备的初始化:初始化硬件,分配资源,并将该设备作为块或网络设备或任何形式向内核注册。

这使设备驱动程序更容易,因为它们不需要搜索设备或担心寻找热插拔的设备。内核会处理该部分,并在有设备供您处理时通知正确的驱动程序。

2020-06-03