在Linux USB子系统中,两条核心链表以“双轨并行”模式管理设备与驱动,直接决定硬件能否被系统正确识别与控制。本文直击这两条链表的本质,拒绝“广义概念”,仅呈现具体技术细节。

1、USB设备链表:物理设备的“数字档案馆”
设备链表以struct usb_device为节点,存储所有已连接的USB设备信息——包括厂商ID、产品ID、配置描述符、接口数组及端点描述符。设备插入时,USB core自动将其注册至此链表,形成全局设备索引库。例如,鼠标、U盘等设备均通过此链表实现“即插即识别”。
2、USB驱动链表:驱动程序的“注册中心”
驱动链表以struct usb_driver为节点,聚合所有已加载的驱动程序(如usb-storage、usbhid)。驱动注册时,其id_table字段定义匹配规则,USB core通过usb_device_match函数对比设备链表中的接口信息与驱动链表的id_table,完成“设备-驱动”精准配对。配对成功后,驱动通过probe函数初始化设备,分配URB(USB请求块)以启动数据传输。
本文凡亿教育原创文章,转载请注明来源!

扫码关注





































