Hi,
Please find attached FreeBSD USB backend patch for VirtualBox SVN.
--HPS
Index: include/USBProxyBackend.h
===================================================================
--- include/USBProxyBackend.h (revision 65443)
+++ include/USBProxyBackend.h (working copy)
@@ -359,13 +359,10 @@
virtual int releaseDevice(HostUSBDevice *aDevice);
protected:
- int initUsbfs(void);
- int initSysfs(void);
virtual int wait(RTMSINTERVAL aMillies);
virtual int interruptWait(void);
virtual PUSBDEVICE getDevices(void);
- int addDeviceToChain(PUSBDEVICE pDev, PUSBDEVICE *ppFirst, PUSBDEVICE **pppNext, int rc);
- virtual void deviceAdded(ComObjPtr<HostUSBDevice> &aDevice, SessionMachinesList &llOpenedMachines, PUSBDEVICE aUSBDevice);
+ virtual bool isFakeUpdateRequired();
private:
RTSEMEVENT mNotifyEventSem;
Index: src-server/freebsd/USBProxyBackendFreeBSD.cpp
===================================================================
--- src-server/freebsd/USBProxyBackendFreeBSD.cpp (revision 65443)
+++ src-server/freebsd/USBProxyBackendFreeBSD.cpp (working copy)
@@ -153,6 +153,12 @@
}
+bool USBProxyBackendFreeBSD::isFakeUpdateRequired()
+{
+ return true;
+}
+
+
int USBProxyBackendFreeBSD::wait(RTMSINTERVAL aMillies)
{
return RTSemEventWait(mNotifyEventSem, aMillies < 1000 ? 1000 : 5000);
@@ -270,8 +276,9 @@
break;
}
- pDevice->enmState = USBDEVICESTATE_UNUSED;
+ pDevice->enmState = USBDEVICESTATE_USED_BY_HOST_CAPTURABLE;
pDevice->bBus = UsbDevInfo.udi_bus;
+ pDevice->bPort = UsbDevInfo.udi_hubport;
pDevice->bDeviceClass = UsbDevInfo.udi_class;
pDevice->bDeviceSubClass = UsbDevInfo.udi_subclass;
pDevice->bDeviceProtocol = UsbDevInfo.udi_protocol;
@@ -292,28 +299,33 @@
pDevice->enmSpeed = USBDEVICESPEED_HIGH;
break;
case USB_SPEED_SUPER:
+ pDevice->enmSpeed = USBDEVICESPEED_SUPER;
+ break;
case USB_SPEED_VARIABLE:
+ pDevice->enmSpeed = USBDEVICESPEED_VARIABLE;
+ break;
default:
pDevice->enmSpeed = USBDEVICESPEED_UNKNOWN;
+ break;
}
if (UsbDevInfo.udi_vendor[0] != '\0')
{
+ USBLibPurgeEncoding(UsbDevInfo.udi_vendor);
pDevice->pszManufacturer = RTStrDupN(UsbDevInfo.udi_vendor, sizeof(UsbDevInfo.udi_vendor));
- USBLibPurgeEncoding(pDevice->pszManufacturer);
}
if (UsbDevInfo.udi_product[0] != '\0')
{
+ USBLibPurgeEncoding(UsbDevInfo.udi_product);
pDevice->pszProduct = RTStrDupN(UsbDevInfo.udi_product, sizeof(UsbDevInfo.udi_product));
- USBLibPurgeEncoding(pDevice->pszProduct);
}
if (UsbDevInfo.udi_serial[0] != '\0')
{
+ USBLibPurgeEncoding(UsbDevInfo.udi_serial);
pDevice->pszSerialNumber = RTStrDupN(UsbDevInfo.udi_serial, sizeof(UsbDevInfo.udi_serial));
- USBLibPurgeEncoding(pDevice->pszSerialNumber);
- pDevice->u64SerialHash = USBLibHashSerial(pDevice->pszSerialNumber);
+ pDevice->u64SerialHash = USBLibHashSerial(UsbDevInfo.udi_serial);
}
rc = ioctl(FileUsb, USB_GET_PLUGTIME, &PlugTime);
if (rc == 0)
@@ -321,7 +333,6 @@
pDevice->pszAddress = RTStrDup(pszDevicePath);
pDevice->pszBackend = RTStrDup("host");
- pDevice->enmState = USBDEVICESTATE_USED_BY_HOST_CAPTURABLE;
usbLogDevice(pDevice);
@@ -337,4 +348,3 @@
return pDevices;
}
-
_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev