Linux kernel 不调用pci_寄存器_驱动程序()
如果不调用Linux kernel 不调用pci_寄存器_驱动程序(),linux-kernel,linux-device-driver,pci,Linux Kernel,Linux Device Driver,Pci,如果不调用pci\u寄存器\u驱动程序,而是使用pci\u get\u设备“手动”检索pci\u dev,那么内核>=2.6会有什么后果 作为“旧式探测”,但这样做而不是调用pci\u寄存器\u驱动程序仍然安全吗?如果它在LDD3时是旧式的,现在是过时的样式。BUSTYPE\u register\u设备和BUSTYPE\u register\u驱动器功能是使总线系统正常工作所必需的。回答这个问题是否为时已晚? 要向驱动程序动态添加新的供应商和设备id,您可以使用: echo“供应商设备子供应商子
pci\u寄存器\u驱动程序,而是使用pci\u get\u设备
“手动”检索pci\u dev
,那么内核>=2.6会有什么后果
作为“旧式探测”,但这样做而不是调用pci\u寄存器\u驱动程序仍然安全吗?如果它在LDD3时是旧式的,现在是过时的样式。BUSTYPE\u register\u设备
和BUSTYPE\u register\u驱动器
功能是使总线系统正常工作所必需的。回答这个问题是否为时已晚?
要向驱动程序动态添加新的供应商和设备id,您可以使用:
echo“供应商设备子供应商子设备类掩码驱动程序数据”>/sys/bus/pci/drivers/{driver}/new\u id感谢您的澄清。但是,如果在运行时动态地实现供应商id和设备id-即不能在编译时准备pci\u驱动程序
(因为它包含const struct pci\u设备id*id\u表
),该怎么办?最新的动态方式是什么?老实说,我从来没有想过这一点。但动态设备/供应商id的优势是什么?您可以在id\u表中添加一些设备/供应商id
,并在运行时在此集合中更改它们(例如,如果将它们作为模块参数获取)。您不能在id\u表中更改它们,因为它们是const
设备id
和供应商id
是硬件,所以它们是const
。您的PCI卡有自己的供应商id
和设备id
。加载时,它将此参数发送到内核;内核将其PCI驱动程序的id\u表
与卡设备/供应商id进行比较,以便加载正确的驱动程序。