[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 2/2] xl: Add commands for usb hot-plug
On Fri, 2013-04-19 at 16:59 +0100, George Dunlap wrote: > + > +int main_usb_attach(int argc, char **argv) > +{ > + uint32_t domid = INVALID_DOMID; > + int opt = 0, rc; > + char *device = NULL; > + > + SWITCH_FOREACH_OPT(opt, "", NULL, "usb-attach", 2) { > + /* No options */ > + } > + > + domid = find_domain(argv[optind]); > + device = argv[optind + 1]; > + > + if (domid == INVALID_DOMID) { > + fprintf(stderr, "Must specify domid\n\n"); > + help("usb-attach"); > + return 2; > + } find_domain won't return in this case, so no need to worry about it yourself. > +int main_usb_detach(int argc, char **argv) > +{ > + uint32_t domid = INVALID_DOMID; > + int opt = 0, rc; > + char *device = NULL; > + int type = 0; > + > + SWITCH_FOREACH_OPT(opt, "", NULL, "usb-detach", 2) { > + /* No options */ > + } > + > + domid = find_domain(argv[optind]); > + device = argv[optind + 1]; > + > + if (domid == INVALID_DOMID) { > + fprintf(stderr, "Must specify domid\n\n"); > + help("usb-detach"); > + return 2; > + } Same again. > + > + rc = usb_detach(domid, type, device); > + if (rc < 0) > + return 1; > + else > + return 0; > +} > + > +static void usb_list(uint32_t domid) > +{ > + libxl_device_usb *dev; > + int num, i; > + > + dev = libxl_device_usb_list(ctx, domid, &num); > + if (dev == NULL) > + return; > + printf("protocol backend type device\n"); > + for (i = 0; i < num; i++) { > + printf("%8s ", (dev[i].protocol==LIBXL_USB_PROTOCOL_PV)?"pv":"dm"); You can use libxl_usb_protocol_to_string here. > + printf("%7d ", dev[i].backend_domid); > + printf("%7s ", > (dev[i].type==LIBXL_DEVICE_USB_TYPE_HOSTDEV)?"hostdev":"unknown"); libxl_device_usb_type_to_string. > + if (dev[i].type == LIBXL_DEVICE_USB_TYPE_HOSTDEV) > + printf("%03d.%03d", > + dev[i].u.hostdev.hostbus, > + dev[i].u.hostdev.hostaddr); > + printf("\n"); > + } > + free(dev); You leak the content of the devices, you need to call libxl_device_usb_dispose on each, or better define libxl_device_usb_list_free (this is inconsistently provided by other devices, but may as well get it right for new code). Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |