[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 18/26] hw/usb/bus: Add usb_get_port_path()
On Sat, Jul 4, 2020 at 8:00 AM Philippe Mathieu-Daudé <f4bug@xxxxxxxxx> wrote: > > Refactor usb_get_full_dev_path() to take a 'want_full_path' > argument, and add usb_get_port_path() which returns a short > path. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@xxxxxxxxx> Reviewed-by: Alistair Francis <alistair.francis@xxxxxxx> Alistair > --- > include/hw/usb.h | 10 ++++++++++ > hw/usb/bus.c | 18 +++++++++++++----- > 2 files changed, 23 insertions(+), 5 deletions(-) > > diff --git a/include/hw/usb.h b/include/hw/usb.h > index 8c3bc920ff..7ea502d421 100644 > --- a/include/hw/usb.h > +++ b/include/hw/usb.h > @@ -506,6 +506,16 @@ void usb_port_location(USBPort *downstream, USBPort > *upstream, int portnr); > void usb_unregister_port(USBBus *bus, USBPort *port); > void usb_claim_port(USBDevice *dev, Error **errp); > void usb_release_port(USBDevice *dev); > +/** > + * usb_get_port_path: > + * @dev: the USB device > + * > + * The returned data must be released with g_free() > + * when no longer required. > + * > + * Returns: a dynamically allocated pathname. > + */ > +char *usb_get_port_path(USBDevice *dev); > void usb_device_attach(USBDevice *dev, Error **errp); > int usb_device_detach(USBDevice *dev); > void usb_check_attach(USBDevice *dev, Error **errp); > diff --git a/hw/usb/bus.c b/hw/usb/bus.c > index fad8194bf5..518e5b94ed 100644 > --- a/hw/usb/bus.c > +++ b/hw/usb/bus.c > @@ -577,12 +577,10 @@ static void usb_bus_dev_print(Monitor *mon, DeviceState > *qdev, int indent) > dev->attached ? ", attached" : ""); > } > > -static char *usb_get_full_dev_path(DeviceState *qdev) > +static char *usb_get_dev_path(USBDevice *dev, bool want_full_path) > { > - USBDevice *dev = USB_DEVICE(qdev); > - > - if (dev->flags & (1 << USB_DEV_FLAG_FULL_PATH)) { > - DeviceState *hcd = qdev->parent_bus->parent; > + if (want_full_path && (dev->flags & (1 << USB_DEV_FLAG_FULL_PATH))) { > + DeviceState *hcd = DEVICE(dev)->parent_bus->parent; > char *id = qdev_get_dev_path(hcd); > > if (id) { > @@ -594,6 +592,16 @@ static char *usb_get_full_dev_path(DeviceState *qdev) > return g_strdup(dev->port->path); > } > > +static char *usb_get_full_dev_path(DeviceState *qdev) > +{ > + return usb_get_dev_path(USB_DEVICE(qdev), true); > +} > + > +char *usb_get_port_path(USBDevice *dev) > +{ > + return usb_get_dev_path(dev, false); > +} > + > static char *usb_get_fw_dev_path(DeviceState *qdev) > { > USBDevice *dev = USB_DEVICE(qdev); > -- > 2.21.3 > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |