【发布时间】:2012-07-12 07:54:56
【问题描述】:
我在http://www.technovelty.org/code/linux/plugging-in-usb.html 阅读了一篇文章。它非常好。
主机的枚举到底是在哪个函数中完成的,uevent是在哪个函数中发送的?
我在 usb_new_device 等函数中引入了 printks,如果我使用“udevadm monitor --kernel”,它甚至会在 hub.c 的 usb_new_device 中调用的枚举函数之前显示内核事件?
日志跟随
[110.819399] 123456 hub_irq
[110.824952]123456 hub_port_connect_change
[110.979624] 123456 hub_port_init
[111.059625] usb 2-1.2:使用 fsl-ehci 和地址 3 的新型高速 USB 设备
[111.189722] 123456 usb_new_device
[111.196219] usb 2-1.2:找到新的 USB 设备,idVendor=05ac,idProduct=12a0
[111.203113] usb 2-1.2:新的 USB 设备字符串:Mfr=1,Product=2,SerialNumber=3
[111.210438] USB 2-1.2:产品:iPhone
[111.214196] USB 2-1.2:制造商:Apple Inc.
[111.218728]usb 2-1.2:序列号:9356b662a93170509226069e5adf53f2351d774e
内核[110.940183] 添加 /devices/platform/fsl-ehci.1/usb2/2-1/2-1.2 (usb)
检查时间戳,尽管 udevadm 输出在最后(udevadm 在用户空间中运行),但它实际上在 [110.940183] 得到了事件,因为在 [111.189722] 调用了 usb_new_device
【问题讨论】:
标签: linux-kernel linux-device-driver udev