2010-12-10 52 views
0

我有一个需要它,而无需等待重新枚举加载已经被插入内核

的使用情况是这样的 被insmoded后装载一个USB内核模块USB驱动程序 - 构建并insmod内核模块。 - 用户必须插入USB设备,那么他/她预计该设备工作 -The驱动程序存在(modprobe的秀),但没有加载,因此USB设备无法正常工作

是否有办法我可以强制内核重新启动一个给定的设备,我目前正在查看libusb,它似乎通过发布IOCTL来实现类似的事情。

+0

也许这是你使用'负载',这是混淆问题。运行insmod加载一个内核模块。如果一个模块出现lsmod,它已经被加载。模块没有检测到USB设备是否需要解决问题? – ctuffli 2010-12-12 15:43:48

+0

没有我的模块正在检测USB设备,但为了让它出现在lsmod中,我需要拔下并重新插入。当然,这种情况只发生一次,就在驱动程序被嵌入后。 – Stb 2010-12-13 20:33:37

回答

0

我对你的问题有点困惑。

您的设备的驱动程序应支持“探测”呼叫。当新设备插入时,较低级别的USB驱动程序将检测并枚举设备。找到每个设备后,它会调用所有已注册USB驱动程序的探测功能,并传递新找到的设备的引用。这使得每个驱动程序都有机会“自称”设备,如果它认为它应该用于驱动设备。

此枚举将在设备插入时自动发生 - 或者(简单地说)当新的USB模块被加载并注册时。

+0

假设没有当前加载的驱动程序声明该设备。如果新的USB驱动程序稍后在系统中注册,它是否会自动获得声称该设备的声音? – Karmastan 2010-12-11 06:20:43

+0

是的,绝对 - 当新的USB驱动程序注册时,它会为未声明的设备发送“民意调查”。 – Brad 2010-12-13 15:02:02

+0

嗯..有趣的是我没有看到..我的驱动程序中可能存在一个错误。 – Stb 2010-12-13 20:35:18