linux – Probe方法设备驱动程序

在Linux内核中,驱动程序提供的probe()方法是什么?它与驱动程序的init函数有何不同,即为什么在驱动程序的init函数中不能执行probe()函数操作?
最佳答案
不同的设备类型可以有probe()函数。例如,PCI和USB设备都有probe()函数。

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

更短的答案,假设PCI:驱动程序的init函数调用pci_register_driver(),它给内核一个能够服务的设备列表,以及一个指向probe()函数的指针。然后内核为每个设备调用驱动程序的probe()函数一次。

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

这使得设备驱动程序更容易,因为他们从来不需要搜索设备或担心找到热插拔的设备。内核处理该部分,并通知正确的驱动程序,当它有一个设备供您处理。

转载注明原文:linux – Probe方法设备驱动程序 - 代码日志