Linux 为什么使用libusb需要分离内核驱动程序?

Linux 为什么使用libusb需要分离内核驱动程序?,linux,libusb,Linux,Libusb,为什么使用libusb需要分离内核驱动程序?为什么不能与内核驱动程序一起执行一些USB IOs?主要是为了避免混淆USB设备的状态。每个界面在任何给定时间只能有一个“用户” 许多USB设备可以进入不同的执行域、缓存状态、DMA传输等。这些类型的设备将在驱动程序中具有状态机跟踪器,并且很容易失去同步或发生其他类型的冲突。并非所有设备都是简单的HID接口(可以通过其他API的btw进行操作)为了通信,每个USB设备都有端点。这些端点就像管道,在这些管道中,所有的数据都在传输 一个端点只有一个方向,只

为什么使用libusb需要分离内核驱动程序?为什么不能与内核驱动程序一起执行一些USB IOs?

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


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

为了通信,每个USB设备都有端点。这些端点就像管道,在这些管道中,所有的数据都在传输

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

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


如果您愿意,您可以随时检测并取消激活使用该设备的驱动程序,以避免使用分离内核驱动程序。

I首先考虑一个真正的全局linux限制。考虑到这是为了避免绕过内核驱动程序而引入问题的预防措施,我能够将userland usb linux ioctls与内核驱动程序一起使用,确保它不会干扰内核驱动程序(这是一个使用FTDI_-sio内核驱动程序的FTDI usb/串行转换器设备)。分离内核驱动程序的缺点是,它会创建udev事件,这在我的情况下会造成麻烦(我会监听它们,我不希望设备在使用时消失…)。