第一个背景。我正在开发Logitech游戏面板设备的驱动程序。它是带有屏幕的键盘。驱动程序运行良好,但默认情况下,设备由HID处理。为了防止HID在驱动程序之前接管设备,我可以在hid-core.c中将其列入黑名单。这是可行的,但不是最佳解决方案,因为我正在与几个人一起工作,我们每个人都必须不断修补我们的HID模块,这变得很麻烦,尤其是因为它通常涉及到重建initramfs之类。
我对此问题进行了一些研究,发现了该邮件列表帖子,最终将我带到了LWN上。这描述了一种在运行时将设备绑定到特定驱动程序的机制。这似乎正是我所需要的。
所以,我尝试了。我能够将键盘与HID解除绑定。这行得通,而且按预期,我无法再键入它。但是,当我尝试将其绑定到驱动程序时,出现“错误:没有这样的设备”,操作失败。
所以我的问题是:如何在内核中将HID设备列入黑名单并提供自己的驱动程序时,如何使用内核绑定/解除绑定操作来复制会发生的情况?-就是说-取代始终需要修补hid-core.c的需要?
我们的驱动程序的源代码在这里:https : //github.com/ali1234/lg4l