Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> 硬件掃描和驅動加載大致流程

硬件掃描和驅動加載大致流程

日期:2017/2/7 14:26:05      編輯:Linux教程
 

系統啟動-->
掃描PCI總線(PCI總線枚舉)-->
從硬件配置空間中中讀取硬件信息-->
PCI總線描述符會包含一個已檢測到的PCI設備列表(在具體的設備驅動加載之前就已經建立好)-->
內核發udev事件-->
用戶態udev執行相應的udev規則加載相應的設備驅動,比如:/etc/udev/50-udev.rules:
ACTION=="add", SUBSYSTEM=="?*", ENV{MODALIAS}=="?*", RUN+="modprobe $env{UDEV_MODPROBE_DBG} $env{MODALIAS}" -->
加載設備驅動時,讀/lib/modules/`uname -r `modules.alias文件(不是modprobe.conf文件),根據alias加載相應的驅動
modules.alias文件由內核根據每個內核模塊信息(modinfo中包含alias信息,即包括該驅動支持的硬件)中的alias信息統一生成。-->
當設備驅動加載時,在模塊初始化時調用pci_register_driver注冊pci_driver,其中包含pci_device_id,列舉驅動程序能處理的設備ID-->
PCI層使用該pci_device_id表查看已檢測到的PCI設備列表中與哪些設備匹配,於是建立該驅動程序的設備列表,對每個匹配的設備調用pci_driver的probe函數
注冊相關聯的設備(如網絡設備)。

Copyright © Windows教程網 All Rights Reserved