没啥技术含量,只是技巧。
一般来说,linux 访问pci设备,只能在pci设备驱动的probe里得到关键的 struct pci_dev * pdev;
偶尔遇到点急事,想走个后门,靠pci_get_device能在任意位置根据厂商和设备id得到这个pdev。
while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev))) ide_scan_pcidev(dev);
static void check_1a(void) { struct pci_dev *ls1a = NULL; int i; ls1a = pci_get_device(0x104a,0x0000, NULL); if(ls1a==NULL) { printk("pci_get_device find ls1a error\n"); } for(i=0;i<6;i++) { printk("--- bar %d:start %x length %x flags %x \n",i,pci_resource_start(ls1a, i),pci_resource_len(ls1a, i),pci_resource_flags(ls1a, i)); } }