Linux 系統熱插拔過程

將可移動設備連入系統時,系統的後臺中會依次發生如下事件

外設插入;

總線發現新設備,通知hotplug產生熱插拔事件,調用device_add,添加新設備到設備管理系統;ndevice_add中調用kobject_uevent(, KOBJ_ADD),向用戶空間廣播新設備加入事件通知;這裏發出通知的方式,就是netlink;

用戶空間運行的daemon(udev)收到event事件廣播;

 udev根據消息和環境變量,查詢sysfs中的/sys的變化,按照規則(/etc/udev/rules.d/*),在/dev目錄下自動創建設備節點;

 

① 外設插入;

② 總線發現(中斷?)新設備,並調用總線驅動查找驅動程序;[“Find a driver that can handle the device” =》 “Bind a driver to that device” =》 “Tell other subsystems to configure the new device.”(參見document/usb/hotplug.txt)]

③ 找到合適的驅動後,會調用device_add,添加新設備到設備管理系統;

④ device_add中會調用kobject_uevent(, KOBJ_ADD),向userspace廣播新設備加入event通知;這裏發出通知的方式,就是netlink;

⑤ 用戶空間運行的daemon(udevd ?或者khubd等轉發給udevd?)收到event事件廣播;

⑥ udevd根據消息和環境變量,查詢/sys的變化,在/dev目錄下自動創建設備節點;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章