[libvirt] [PATCH 06/10] libxl: add tablet/mouse input device support
Jim Fehlig
jfehlig at suse.com
Thu Feb 19 03:22:12 UTC 2015
Marek Marczykowski-Górecki wrote:
> Signed-off-by: Marek Marczykowski-Górecki <marmarek at invisiblethingslab.com>
> ---
> Changes in v2:
> - rebase on 1.2.12+
> - multiple devices support
>
> src/libxl/libxl_conf.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 48 insertions(+)
>
> diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
> index 4730585..b1131ea 100644
> --- a/src/libxl/libxl_conf.c
> +++ b/src/libxl/libxl_conf.c
> @@ -815,6 +815,54 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
> }
> }
>
> + if (def->ninputs) {
> +#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST
> + if (VIR_ALLOC_N(b_info->u.hvm.usbdevice_list, def->ninputs+1) < 0)
> + return -1;
> +#else
> + if (def->ninputs > 1) {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("libxenlight supports only one input device"));
> + return -1;
> + }
> +#endif
> + for (i = 0; i < def->ninputs; i++) {
> + if (def->inputs[i]->bus != VIR_DOMAIN_INPUT_BUS_USB) {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("libxenlight supports only USB input"));
> + return -1;
> + }
> + }
>
> + for (i = 0; i < def->ninputs; i++) {
> + switch (def->inputs[i]->type) {
> + case VIR_DOMAIN_INPUT_TYPE_MOUSE:
> +#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST
> + if (VIR_STRDUP(b_info->u.hvm.usbdevice_list[i], "mouse") < 0)
> + return -1;
> +#else
> + VIR_FREE(b_info->u.hvm.usbdevice);
> + if (VIR_STRDUP(b_info->u.hvm.usbdevice, "mouse") < 0)
> + return -1;
> +#endif
> + break;
> + case VIR_DOMAIN_INPUT_TYPE_TABLET:
> +#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST
> + if (VIR_STRDUP(b_info->u.hvm.usbdevice_list[i], "tablet") < 0)
> + return -1;
> +#else
> + VIR_FREE(b_info->u.hvm.usbdevice);
> + if (VIR_STRDUP(b_info->u.hvm.usbdevice, "tablet") < 0)
> + return -1;
> +#endif
>
One of the #ifdef could be dropped with something like
for (i=0; i < def->ninputs; i++) {
char *temp;
#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST
temp = b_info->u.hvm.usbdevice_list[i];
#else
temp = b_info->u.hvm.usbdevice;
#endif
...
VIR_STRDUP(temp, "mouse");
...
}
Also, could you look into adding support for usbdevice_list to the
parsing/formating code in src/xenconfig?
Regards,
Jim
> + break;
> + default:
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("Unknown input device type"));
> + return -1;
> + }
> + }
> + }
> +
> /*
> * The following comment and calculation were taken directly from
> * libxenlight's internal function libxl_get_required_shadow_memory():
>
More information about the libvir-list
mailing list