On 11/11/18 10:59 PM, Han Han wrote:
Add this function to check if the a usb address is attached to a hub
device.
Signed-off-by: Han Han <hhan(a)redhat.com>
---
src/conf/domain_addr.c | 22 ++++++++++++++++++++++
src/conf/domain_addr.h | 5 +++++
src/libvirt_private.syms | 1 +
3 files changed, 28 insertions(+)
NB: Patches 1-6 were already Reviewed-by me, so I'll start here...
diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
index e4ed143b76..722bd2c9fe 100644
--- a/src/conf/domain_addr.c
+++ b/src/conf/domain_addr.c
@@ -2155,6 +2155,28 @@ virDomainUSBAddressEnsure(virDomainUSBAddressSetPtr addrs,
}
+bool
+virDomainUSBAddressIsAttachedToHub(virDomainDeviceInfoPtr info,
+ virDomainHubDefPtr hub)
+{
+ unsigned int *hub_port = hub->info.addr.usb.port;
+ unsigned int *device_port = info->addr.usb.port;
+ size_t i;
These 3 can go inside the if or you could have done the reverse logic to:
if (hub->info.addr.usb.bus != info->addr.usb.bus)
return false;
+ if (hub->info.addr.usb.bus == info->addr.usb.bus) {
+ for (i = 0; i < VIR_DOMAIN_DEVICE_USB_MAX_PORT_DEPTH; ++i) {
+ if (hub_port[i] == device_port[i])
+ continue;
+ else if (hub_port[i] == 0 && device_port[i] != 0)
+ return true;
+ else
+ return false;
perhaps a brief comment about what each check means would help.
+ }
+ }
+
+ return false;
+}
+
+
int
virDomainUSBAddressRelease(virDomainUSBAddressSetPtr addrs,
virDomainDeviceInfoPtr info)
diff --git a/src/conf/domain_addr.h b/src/conf/domain_addr.h
index 2a9af9c00b..b1e0714923 100644
--- a/src/conf/domain_addr.h
+++ b/src/conf/domain_addr.h
@@ -285,6 +285,11 @@ virDomainUSBAddressEnsure(virDomainUSBAddressSetPtr addrs,
virDomainDeviceInfoPtr info)
ATTRIBUTE_NONNULL(2);
+bool
+virDomainUSBAddressIsAttachedToHub(virDomainDeviceInfoPtr info,
+ virDomainHubDefPtr hub)
+ ATTRIBUTE_NONNULL(2);
I'm assuming a cut-n-paste, but since both @info and @hub are referenced
without checking - both would get the ATTRIBUTE_NONNULL even though it
really only matters if someone tries to pass a NULL to the function.
John
+
int
virDomainUSBAddressRelease(virDomainUSBAddressSetPtr addrs,
virDomainDeviceInfoPtr info)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index b29c2bf62b..b45a7b92b4 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -131,6 +131,7 @@ virDomainPCIControllerModelToConnectType;
virDomainUSBAddressAssign;
virDomainUSBAddressCountAllPorts;
virDomainUSBAddressEnsure;
+virDomainUSBAddressIsAttachedToHub;
virDomainUSBAddressPortFormatBuf;
virDomainUSBAddressPortIsValid;
virDomainUSBAddressPresent;