Re: [Xen-devel] [PATCH V11 3/5] libxl: add pvusb API
On 15/12/15 05:54, Chunyan Liu wrote: > Add pvusb APIs, including: > - attach/detach (create/destroy) virtual usb controller. > - attach/detach usb device > - list usb controller and usb devices > - some other helper functions > > Signed-off-by: Chunyan Liu> Signed-off-by: Simon Cao > Signed-off-by: George Dunlap Reviewed-by: George Dunlap > > --- > changes: > * format fix: extra white space, line > 80, etc. > * return ERROR_FAILED instead of errno (>0) in sysfs_write_intf > * fix an error in libxl_ctrlport_to_device_usbdev > * extract a helper function for alloc_dirent > > tools/libxl/Makefile |2 +- > tools/libxl/libxl.c | 34 +- > tools/libxl/libxl.h | 77 ++ > tools/libxl/libxl_device.c | 13 +- > tools/libxl/libxl_internal.h | 22 +- > tools/libxl/libxl_osdeps.h | 13 + > tools/libxl/libxl_pvusb.c| 1548 > ++ > tools/libxl/libxl_types.idl | 46 + > tools/libxl/libxl_types_internal.idl |1 + > tools/libxl/libxl_utils.c| 18 + > tools/libxl/libxl_utils.h|5 + > 11 files changed, 1766 insertions(+), 13 deletions(-) > create mode 100644 tools/libxl/libxl_pvusb.c > > diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile > index 6ff5bee..a36145a 100644 > --- a/tools/libxl/Makefile > +++ b/tools/libxl/Makefile > @@ -103,7 +103,7 @@ LIBXL_OBJS = flexarray.o libxl.o libxl_create.o > libxl_dm.o libxl_pci.o \ > libxl_stream_read.o libxl_stream_write.o \ > libxl_save_callout.o _libxl_save_msgs_callout.o \ > libxl_qmp.o libxl_event.o libxl_fork.o \ > - libxl_dom_suspend.o $(LIBXL_OBJS-y) > + libxl_dom_suspend.o libxl_pvusb.o $(LIBXL_OBJS-y) > LIBXL_OBJS += libxl_genid.o > LIBXL_OBJS += _libxl_types.o libxl_flask.o _libxl_types_internal.o > > diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c > index e10242d..2e4e1c3 100644 > --- a/tools/libxl/libxl.c > +++ b/tools/libxl/libxl.c > @@ -3201,7 +3201,7 @@ void > libxl__device_disk_local_initiate_detach(libxl__egc *egc, > aodev->dev = device; > aodev->callback = local_device_detach_cb; > aodev->force = 0; > -libxl__initiate_device_remove(egc, aodev); > +libxl__initiate_device_generic_remove(egc, aodev); > return; > } > > @@ -4154,8 +4154,10 @@ out: > * libxl_device_vkb_destroy > * libxl_device_vfb_remove > * libxl_device_vfb_destroy > + * libxl_device_usbctrl_remove > + * libxl_device_usbctrl_destroy > */ > -#define DEFINE_DEVICE_REMOVE(type, removedestroy, f)\ > +#define DEFINE_DEVICE_REMOVE_EXT(type, remtype, removedestroy, f)\ > int libxl_device_##type##_##removedestroy(libxl_ctx *ctx, \ > uint32_t domid, libxl_device_##type *type, \ > const libxl_asyncop_how *ao_how)\ > @@ -4175,13 +4177,19 @@ out: > aodev->dev = device;\ > aodev->callback = device_addrm_aocomplete; \ > aodev->force = f; \ > -libxl__initiate_device_remove(egc, aodev); \ > +libxl__initiate_device_##remtype##_remove(egc, aodev); \ > \ > out:\ > -if (rc) return AO_CREATE_FAIL(rc); > \ > +if (rc) return AO_CREATE_FAIL(rc); \ > return AO_INPROGRESS; \ > } > > +#define DEFINE_DEVICE_REMOVE(type, removedestroy, f) \ > +DEFINE_DEVICE_REMOVE_EXT(type, generic, removedestroy, f) > + > +#define DEFINE_DEVICE_REMOVE_CUSTOM(type, removedestroy, f) \ > +DEFINE_DEVICE_REMOVE_EXT(type, type, removedestroy, f) > + > /* Define all remove/destroy functions and undef the macro */ > > /* disk */ > @@ -4205,6 +4213,10 @@ DEFINE_DEVICE_REMOVE(vfb, destroy, 1) > DEFINE_DEVICE_REMOVE(vtpm, remove, 0) > DEFINE_DEVICE_REMOVE(vtpm, destroy, 1) > > +/* usbctrl */ > +DEFINE_DEVICE_REMOVE_CUSTOM(usbctrl, remove, 0) > +DEFINE_DEVICE_REMOVE_CUSTOM(usbctrl, destroy, 1) > + > /* channel/console hotunplug is not implemented. There are 2 possibilities: > * 1. add support for secondary consoles to xenconsoled > * 2. dynamically add/remove qemu chardevs via qmp messages. */ > @@ -4218,6 +4230,8 @@ DEFINE_DEVICE_REMOVE(vtpm, destroy, 1) > * libxl_device_disk_add > * libxl_device_nic_add > * libxl_device_vtpm_add > + * libxl_device_usbctrl_add > + * libxl_device_usbdev_add >
[Xen-devel] [PATCH V11 3/5] libxl: add pvusb API
Add pvusb APIs, including: - attach/detach (create/destroy) virtual usb controller. - attach/detach usb device - list usb controller and usb devices - some other helper functions Signed-off-by: Chunyan LiuSigned-off-by: Simon Cao Signed-off-by: George Dunlap --- changes: * format fix: extra white space, line > 80, etc. * return ERROR_FAILED instead of errno (>0) in sysfs_write_intf * fix an error in libxl_ctrlport_to_device_usbdev * extract a helper function for alloc_dirent tools/libxl/Makefile |2 +- tools/libxl/libxl.c | 34 +- tools/libxl/libxl.h | 77 ++ tools/libxl/libxl_device.c | 13 +- tools/libxl/libxl_internal.h | 22 +- tools/libxl/libxl_osdeps.h | 13 + tools/libxl/libxl_pvusb.c| 1548 ++ tools/libxl/libxl_types.idl | 46 + tools/libxl/libxl_types_internal.idl |1 + tools/libxl/libxl_utils.c| 18 + tools/libxl/libxl_utils.h|5 + 11 files changed, 1766 insertions(+), 13 deletions(-) create mode 100644 tools/libxl/libxl_pvusb.c diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile index 6ff5bee..a36145a 100644 --- a/tools/libxl/Makefile +++ b/tools/libxl/Makefile @@ -103,7 +103,7 @@ LIBXL_OBJS = flexarray.o libxl.o libxl_create.o libxl_dm.o libxl_pci.o \ libxl_stream_read.o libxl_stream_write.o \ libxl_save_callout.o _libxl_save_msgs_callout.o \ libxl_qmp.o libxl_event.o libxl_fork.o \ - libxl_dom_suspend.o $(LIBXL_OBJS-y) + libxl_dom_suspend.o libxl_pvusb.o $(LIBXL_OBJS-y) LIBXL_OBJS += libxl_genid.o LIBXL_OBJS += _libxl_types.o libxl_flask.o _libxl_types_internal.o diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index e10242d..2e4e1c3 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -3201,7 +3201,7 @@ void libxl__device_disk_local_initiate_detach(libxl__egc *egc, aodev->dev = device; aodev->callback = local_device_detach_cb; aodev->force = 0; -libxl__initiate_device_remove(egc, aodev); +libxl__initiate_device_generic_remove(egc, aodev); return; } @@ -4154,8 +4154,10 @@ out: * libxl_device_vkb_destroy * libxl_device_vfb_remove * libxl_device_vfb_destroy + * libxl_device_usbctrl_remove + * libxl_device_usbctrl_destroy */ -#define DEFINE_DEVICE_REMOVE(type, removedestroy, f)\ +#define DEFINE_DEVICE_REMOVE_EXT(type, remtype, removedestroy, f)\ int libxl_device_##type##_##removedestroy(libxl_ctx *ctx, \ uint32_t domid, libxl_device_##type *type, \ const libxl_asyncop_how *ao_how)\ @@ -4175,13 +4177,19 @@ out: aodev->dev = device;\ aodev->callback = device_addrm_aocomplete; \ aodev->force = f; \ -libxl__initiate_device_remove(egc, aodev); \ +libxl__initiate_device_##remtype##_remove(egc, aodev); \ \ out:\ -if (rc) return AO_CREATE_FAIL(rc);\ +if (rc) return AO_CREATE_FAIL(rc); \ return AO_INPROGRESS; \ } +#define DEFINE_DEVICE_REMOVE(type, removedestroy, f) \ +DEFINE_DEVICE_REMOVE_EXT(type, generic, removedestroy, f) + +#define DEFINE_DEVICE_REMOVE_CUSTOM(type, removedestroy, f) \ +DEFINE_DEVICE_REMOVE_EXT(type, type, removedestroy, f) + /* Define all remove/destroy functions and undef the macro */ /* disk */ @@ -4205,6 +4213,10 @@ DEFINE_DEVICE_REMOVE(vfb, destroy, 1) DEFINE_DEVICE_REMOVE(vtpm, remove, 0) DEFINE_DEVICE_REMOVE(vtpm, destroy, 1) +/* usbctrl */ +DEFINE_DEVICE_REMOVE_CUSTOM(usbctrl, remove, 0) +DEFINE_DEVICE_REMOVE_CUSTOM(usbctrl, destroy, 1) + /* channel/console hotunplug is not implemented. There are 2 possibilities: * 1. add support for secondary consoles to xenconsoled * 2. dynamically add/remove qemu chardevs via qmp messages. */ @@ -4218,6 +4230,8 @@ DEFINE_DEVICE_REMOVE(vtpm, destroy, 1) * libxl_device_disk_add * libxl_device_nic_add * libxl_device_vtpm_add + * libxl_device_usbctrl_add + * libxl_device_usbdev_add */ #define DEFINE_DEVICE_ADD(type) \ @@ -4249,6 +4263,12 @@ DEFINE_DEVICE_ADD(nic) /* vtpm */ DEFINE_DEVICE_ADD(vtpm) +/* usbctrl */ +DEFINE_DEVICE_ADD(usbctrl) + +/* usb */ +DEFINE_DEVICE_ADD(usbdev) + #undef DEFINE_DEVICE_ADD