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 ハブ_irq
[ 110.824952] 123456 ハブ_ポート_接続_変更
[ 110.979624] 123456 ハブ_ポート_初期化
[ 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
KERNEL[110.940183] /devices/platform/fsl-ehci.1/usb2/2-1/2-1.2 (usb) を追加
タイムスタンプを確認しますが、udevadm の出力は最後にありますが (udevadm はユーザー空間で実行されます)、usb_new_device が [111.189722] で呼び出された [110.940183] で実際にイベントを取得しました。