[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 18/26] hw/usb/bus: Add usb_get_port_path()
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> --- 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 |