如何禁止内核抢先加载已知USB驱动?

Cricketol 2010-09-26 03:31:06
make&insmod,然后插入北通的游戏手柄,dmesg输出:
usb 5-1.4: new low speed USB device using uhci_hcd and address 6
usb 5-1.4: New USB device found, idVendor=0e8f, idProduct=0002
usb 5-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 5-1.4: Product: BETOP USB GAMEPAD
usb 5-1.4: Manufacturer: GreenAsia Inc.
input: GreenAsia Inc. BETOP USB GAMEPAD as /devices/pci0000:00/0000:00:1d.0/usb5/5-1/5-1.4/5-1.4:1.0/input/input12
generic-usb 0003:0E8F:0002.0004: input,hidraw1: USB HID v1.10 Joystick [GreenAsia Inc. BETOP USB GAMEPAD] on usb-0000:00:1d.0-1.4/input0

但是我自己写的驱动的probe函数没有被调用

把VendorID和ProductID改为工行U盾对应的值,重新make&insmod,然后插入U盾,这个时候probe函数被调用了,dmesg:
usb 5-1.1: new low speed USB device using uhci_hcd and address 7
usb 5-1.1: New USB device found, idVendor=096e, idProduct=0010
usb 5-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 5-1.1: Product: Giesecke & Devrient StarKey
usb 5-1.1: Manufacturer: STMicroelectronic

我的猜测是对于游戏手柄内核已经有相应的驱动,所以直接启用原有驱动,不会加载我自己写的驱动,而对于工行U盾内核没有对应的驱动,所以匹配到我的驱动了,如果是这样又怎样禁止内核抢先加载USB驱动?
...全文
468 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cricketol 2010-10-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 helldevil 的回复:]

preempt这个字段可以禁止内核抢占
[/Quote]

另外,关于preempt字段的做法我google了很久,未果,helldevil兄能否给个详细点的资料呢?
Cricketol 2010-10-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 deep_pro 的回复:]

你只要找到内核原有的驱动,把它禁用掉即可
http://hi.baidu.com/deep_pro/blog/item/415ec217bdead20c4b90a77d.html
[/Quote]

国庆节理了一下思路,解决了
首先根据你提供的方法确定是usbhid模块抢占了设备
禁掉模块的话鼠标键盘都用不了,所以我在usbhid模块probe函数开头动了一下手脚,特定设备就不被抢占了

把过程整理了一下,详见:http://blog.csdn.net/Cricketol/archive/2010/10/03/5919771.aspx

希望我的总结能帮助遇到此类问题的兄弟
T-Quake 2010-09-26
  • 打赏
  • 举报
回复
preempt这个字段可以禁止内核抢占
deep_pro 2010-09-26
  • 打赏
  • 举报
回复
你只要找到内核原有的驱动,把它禁用掉即可
http://hi.baidu.com/deep_pro/blog/item/415ec217bdead20c4b90a77d.html

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧