我的理解:usb子系统使用storage_probe()和id_table去判断是否支持新插入的usb设备,支持的话就加载该驱动。(内核中相关代码我看了一点。storage_probe()是static的,它和id_table都在usb_storage_driver结构体中,而usb_storage_driver又是static的,只在usb_stor_init()中被用到,usb_stor_init()只有驱动被加载时调用。代码主要都在/linux-2.6.35/drivers/usb/storage/usb.c中)
试验:我的ubuntu中用lsmod | grep usb 没有发现 usb-storage.ko 被加载,于是插入一个u盘,再次lsmod | grep usb,出现了usb-storage ,说明usb-storage.ko被usb子系统加载。
问题:storage_probe()和id_table是usb-storage.ko中的,usb-storage.ko被加载前usb子系统是不能使用其中的代码的,那又是怎么判断并加载的?
问题延伸:如果我有个特殊的usb设备,并且为其配了个ko文件,如何让usb子系统自动识别我的设备并加载对应的驱动?
请教哪位懂得,谢谢。
------解决方案--------------------
帮顶