LINUX内核PCI扫描过程

内核版本 3.10.103

1. ACPI热插拔扫描
subsys_initcall(acpi_init)@drivers/acpi/bus.c
|-acpi_scan_init@drivers/acpi/scan.c
|->acpi_pci_root_init@drivers/acpi/pci_root.c
| |->acpi_scan_add_handler(&pci_root_handler)@drivers/acpi/scan.c
| |->list_add_tail(&handler->list_node, &acpi_scan_handlers_list);
|->acpi_pci_link_init@drivers/acpi/pci_link.c
| |->acpi_scan_add_handler(&pci_link_handler);
|->acpi_bus_scan(ACPI_ROOT_OBJECT)
|->acpi_bus_scan@drivers/acpi/scan.c
|->acpi_walk_namespace@drivers/acpi/acpica/nsxfeval.c
|->acpi_ns_walk_namespace@drivers/acpi/acpica/nswalk.c
|->acpi_bus_device_attach(即post_order_visit)
|->acpi_scan_attach_handler
|->acpi_scan_match_handler
|->handler->attach(即acpi_pci_root_add)
|->pci_acpi_scan_root@arch/x86/pci/probe.c
|->probe_pci_root_info
|->pci_scan_child_bus@drivers/pci/probe.c
|->pci_scan_slot


2. 传统扫描
subsys_initcall(pci_subsys_init)@arch/x86/pci/legacy.c
|->pci_legacy_init
|->pcibios_scan_root@arch/x86/pci/common.c
|->pci_scan_bus_on_node
|->pci_scan_root_bus
|->pci_scan_root_bus@drivers/pci/probe.c
|->pci_create_root_bus
|->pci_scan_child_bus
|->pci_scan_slot

更多相关文章

  1. 第一次发帖望各位大神帮顶啊!mini2440上的Linux2.6.32.2内核中含
  2. [置顶] Linux 内核学习(1)
  3. linux内核段属性机制(以subsys_initcall和module_init为例)
  4. 【Linxu内核设计与实现】-第7章 中断和中断处理
  5. Linux2.6内核调度器介绍
  6. iptables:传统的Linux防火墙管理程序
  7. Linux 3.4.39内核编译配置选项介绍
  8. ubuntu14.04下qemu调试linux内核
  9. ATT汇编与Intel汇编的区别,摘自《深入分析linux内核源码》一书

随机推荐

  1. Android超炫日期日历控件:TimesSquare
  2. Android不同层次开启硬件加速的方式
  3. Android官方ORM Room介绍
  4. android集合SSH搭建服务器客户端请求
  5. android检测网络状态
  6. Android获取屏幕宽度的4种方法
  7. Android UI属性大解
  8. 国内目前最全面的介绍——Android中的Bro
  9. Hook android系统调用研究(一)
  10. android 建数据库 SQLite 存储sd 卡或者