最終更新:2015-10-29 (木) 15:17:55 (3074d)
What actually happens when you plug in a USB device?
Top / What actually happens when you plug in a USB device?
https://www.technovelty.org/linux/what-actually-happens-when-you-plug-in-a-usb-device.html
USBの初期化
drivers/usb/core/usb.c
usb_init
- usb_debugfs_init
- usb_acpi_register - Linux 3.5〜
- bus_register(usb_bus_type)
- bus_register_notifier(usb_bus_type, usb_bus_nb)
- usb_major_init
- usb_register(usbfs_driver)
- usb_devio_init
- usb_hub_init
- usb_register(hub_driver?)
- usb_register_device_driver(usb_generic_driver)
- usb_hub_cleanup?
Linux/USB/probe
デバイス
登録
- usb_init
- usb_register_device_driver(usb_generic_driver)
- [usb_device_driver] usb_generic_driver.probe = generic_probe (定義)
- [device_driver] usb_generic_driver.drvwrap.driver?
- usb_generic_driver.drvwrap.driver.probe? = usb_probe_device
呼び出し
- usb_probe_device(device *dev)
- error = [usb_device_driver] udriver->probe(udev) -> generic_probeが呼ばれる
インターフェイス
登録
- usb_register_driver
- [usb_driver] new_driver->drvwrap.driver.probe = usb_probe_interface;