一、PCI总线
1、PCI桥
Host/PCI桥:用于连接CPU与PCI根总线,即“北桥芯片组”
PCI/ISA桥:用于连接PCI与旧的ISA总线,即“南桥芯片组”
PCI-to-PCI桥:用于连接PCI主总线与次总线
2、pci_bus结构体(PCI总线结构体)
定义在include/linux/pci.h中
struct pci_bus {
struct list_head node; /* 链表元素node*/
struct pci_bus *parent; /* PCI总线的父总线*/
struct list_head children; /* 子总线链表头 */
struct list_head devices; /* PCI总线上的设备链表*/
struct pci_dev *self; /* 指向应用该PCI总线*/
struct list_head slots; /* PCI总线上的插槽链表*/
struct resource *resource[PCI_BRIDGE_RESOURCE_NUM];
struct list_head resources; /* 路由到该总线上的地址空间资源链表*/
struct pci_ops *ops; /* PCI总线的访问配置空间的函数集 */
void *sysdata; /* 系统特定的数据hook for sys-specific extension */
struct proc_dir_entry *procdir; /* /proc/bus/pci对应的目录项*/
unsigned char number; /* 总线数*/
unsigned char primary; /* 总线号 */
unsigned char secondary; /* 次总线号 */
unsigned char subordinate; /* 最大总线号 */
unsigned char max_bus_speed; /* enum pci_bus_speed */
unsigned char cur_bus_speed; /* enum pci_bus_speed */
char name[48];
unsigned short bridge_ctl; /* manage NO_ISA/FBB/et al behaviors */
pci_bus_flags_t bus_flags; /* Inherited by child busses */
struct device *bridge;
struct device dev;
struct bin_attribute *legacy_io; /* legacy I/O for this bus */
struct bin_attribute *legacy_mem; /* legacy mem */
unsigned int is_added:1;
};
3、pci_dev结构体(PCI设备结构体)
定义在include/linux/pci.h中
struct pci_dev {
struct list_head bus_list;
1、PCI桥
Host/PCI桥:用于连接CPU与PCI根总线,即“北桥芯片组”
PCI/ISA桥:用于连接PCI与旧的ISA总线,即“南桥芯片组”
PCI-to-PCI桥:用于连接PCI主总线与次总线
2、pci_bus结构体(PCI总线结构体)
定义在include/linux/pci.h中
struct pci_bus {
struct list_head node; /* 链表元素node*/
struct pci_bus *parent; /* PCI总线的父总线*/
struct list_head children; /* 子总线链表头 */
struct list_head devices; /* PCI总线上的设备链表*/
struct pci_dev *self; /* 指向应用该PCI总线*/
struct list_head slots; /* PCI总线上的插槽链表*/
struct resource *resource[PCI_BRIDGE_RESOURCE_NUM];
struct list_head resources; /* 路由到该总线上的地址空间资源链表*/
struct pci_ops *ops; /* PCI总线的访问配置空间的函数集 */
void *sysdata; /* 系统特定的数据hook for sys-specific extension */
struct proc_dir_entry *procdir; /* /proc/bus/pci对应的目录项*/
unsigned char number; /* 总线数*/
unsigned char primary; /* 总线号 */
unsigned char secondary; /* 次总线号 */
unsigned char subordinate; /* 最大总线号 */
unsigned char max_bus_speed; /* enum pci_bus_speed */
unsigned char cur_bus_speed; /* enum pci_bus_speed */
char name[48];
unsigned short bridge_ctl; /* manage NO_ISA/FBB/et al behaviors */
pci_bus_flags_t bus_flags; /* Inherited by child busses */
struct device *bridge;
struct device dev;
struct bin_attribute *legacy_io; /* legacy I/O for this bus */
struct bin_attribute *legacy_mem; /* legacy mem */
unsigned int is_added:1;
};
3、pci_dev结构体(PCI设备结构体)
定义在include/linux/pci.h中
struct pci_dev {
struct list_head bus_list;