2016-05-31 81 views

回答

1

主要是为了避免混淆USB设备的状态。每个界面在任何时候只能有一个“用户”。

许多USB设备可以进入不同的执行域,缓存状态,DMA传输等。这些类型的设备将在驱动程序中具有状态机跟踪器,并且很容易失去同步或其他类型冲突。并非所有设备都是简单的HID接口(可通过其他API的btw操作)

+0

我首先想到了一个真正的全局linux限制。鉴于这是避免绕过内核驱动程序和引入问题的预防措施,我能够使用用户空间的usb linux ioctls https://www.kernel.org/doc/htmldocs/usb/usbfs-ioctl.html以及内核驱动程序,确保它不会干扰它(它是使用ftdi_sio内核驱动程序的FTDI USB /串行转换器设备)。分离内核驱动程序的缺点是它会创建udev事件,这会导致我的情况出现问题(我倾听它们,并且我不希望某个设备在使用时消失)。 –

0

为了进行通信,每个USB设备都有端点。这些端点就像管道一样,在这些管道中所有的数据都在流失。

一个端点只有一个方向,只能由1个驱动程序使用。

因此,您需要分离内核驱动程序才能使这些端点可用。

如果您希望您始终能够检测和禁用使用该设备的驱动程序,以避免使用分离式内核驱动程序。

相关问题