在《PCI-E体系结构导读》+linux3.15的基础,大致过了下x86 linux pci的初始化过程
=========do_initcalls完成一系列驱动初始化,包括PCI的初始化也在这个过程中=================
kernel_init->kernel_init_freeable->do_basic_setup->do_initcalls
===============================================linux PCI初始化==========================================
Sysmap信息
........
==============
1、drivers/pci/probe.c ---->postcore_initcall(pcibus_class_init); --->.initcall2.init
class_register(&pcibus_class); //在sys/class/下创建一个pci_bus目录
===============
2、drivers/pci/pci-driver.c ---->postcore_initcall(pci_driver_init); --->.initcall2.init
struct bus_type pci_bus_type = {
.name = "pci",
.match = pci_bus_match, /*pci match函数*/
.uevent = pci_uevent,
.probe = pci_device_probe,
.remove
=========do_initcalls完成一系列驱动初始化,包括PCI的初始化也在这个过程中=================
kernel_init->kernel_init_freeable->do_basic_setup->do_initcalls
===============================================linux PCI初始化==========================================
Sysmap信息
........
==============
1、drivers/pci/probe.c ---->postcore_initcall(pcibus_class_init); --->.initcall2.init
class_register(&pcibus_class); //在sys/class/下创建一个pci_bus目录
===============
2、drivers/pci/pci-driver.c ---->postcore_initcall(pci_driver_init); --->.initcall2.init
struct bus_type pci_bus_type = {
.name = "pci",
.match = pci_bus_match, /*pci match函数*/
.uevent = pci_uevent,
.probe = pci_device_probe,
.remove