2015-09-16
系统的所有pci设备记录在/sys/bus/pci/devices目录下面:
而如果pci地址下连接有其他子设备的话,可以在对应的目录下找到其他的pci地址:
可以看到0000:00:11.0下连接有0000:02:00.0, 0000:02:01.0, 0000:02:02.0, 0000:02:03.0四个设备。
所以,通过分析/sys/bus/pci/devices目录结构,就可以简单生成pci设备的树形结构。
具体过程如下:
1.读取所有的pci地址(/sys/bus/pci/devices)
承载pci信息的结构体定义如下:
/*****************************/
typedef struct _pci_data {
char caPCIAddr[ NAMELEN ];
char caPCIClassId[ NAMELEN ];
char caPCIClassDesc[ NAMELEN ];
char caPCIDomain[ NAMELEN ];
char caPCIBus[ NAMELEN ];
char caPCISlot[ NAMELEN ];
char caPCIFunction[ NAMELEN ];
char caPCIProductId[ NAMELEN ];
char caPCIVendorId[ NAMELEN ];
} st_p