[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 0/3] libxl: add framework for device types
Juergen Gross writes ("[PATCH 0/3] libxl: add framework for device types"): > Instead of duplicate coding for each device type (vtpms, usbctrls, ...) > especially on domain creation introduce a framework for that purpose. I think something like this is a jolly good idea. Thanks a lot! The rough shape - a set of structs with what amount to method calls - seems a good direction to be going in. I have some comments/questions. I saw this in 2/3: > + for (i = 0; i < d_config->num_pcidevs; i++) { > + rc = libxl__device_pci_add(gc, domid, &d_config->pcidevs[i], 1); > + if (rc < 0) { > + LOG(ERROR, "libxl_device_pci_add failed: %d", rc); > + goto out; > + } > + } > + And there is similar code in 3/3 for dtdevs. Could that be lifted away somehow ? (You'd have to take some care about the types, sadly; ie, I think libxl__device_pci_add might have to start to take a void*; maybe some macros could make things typesafe?) In 1/3: > +struct libxl_device_type libxl__usbctrl_devtype = { > + .type = "usbctrl", > + .num_offset = offsetof(libxl_domain_config, num_usbctrls), > + .add = libxl__add_usbctrls, > +}; And then num_offset is used like this: > + if (*(int *)((void *)d_config + dt->num_offset) > 0) { This is a fine approach but I would prefer it if the there were a bit more type safety, particularly in the parts that have to occur once for each device type. For example, there is nothing stopping one using this pattern with a num_* field which is not an int. Perhaps there should be a macro for generating the libxl_device_type contents ? It could perhaps take `usbctrls' and make `num_usbctrls' out of it using token pasting. Also these structs should be static const, I think. Thanks again! Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |