From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH v3 3/3] xl: Accept a list for usbdevice in config file Date: Mon, 11 Mar 2013 13:57:49 +0000 Message-ID: <1363010269-16188-3-git-send-email-george.dunlap@eu.citrix.com> References: <1363010269-16188-1-git-send-email-george.dunlap@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1363010269-16188-1-git-send-email-george.dunlap@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: George Dunlap , Ian Jackson , Ian Campbell List-Id: xen-devel@lists.xenproject.org Allow the "usbdevice" key to accept a list of USB devices, and pass them in using the new usbdevice_list domain build element. For backwards compatibility, still accept singleton values. Also update the xl.cfg manpage, adding information about how to pass through host devices. v2: - Add some verbiage to make it clear that "usb" is for emulated devices - Reference qemu manual for more usbdevice options Signed-off-by: George Dunlap --- docs/man/xl.cfg.pod.5 | 28 +++++++++++++++++++--------- tools/libxl/xl_cmdimpl.c | 19 +++++++++++++++++-- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5 index 25523c9..a90fa11 100644 --- a/docs/man/xl.cfg.pod.5 +++ b/docs/man/xl.cfg.pod.5 @@ -1145,17 +1145,27 @@ device. =item B -Enables or disables a USB bus in the guest. +Enables or disables an emulated USB bus in the guest. -=item B +=item B -Adds B to the USB bus. The USB bus must also be enabled using -B. The most common use for this option is B -which adds pointer device using absolute coordinates. Such devices -function better than relative coordinate devices (such as a standard -mouse) since many methods of exporting guest graphics (such as VNC) -work better in this mode. Note that this is independent of the actual -pointer device you are using on the host/client side. +Adds Bs to the emulated USB bus. The USB bus must also be +enabled using B. The most common use for this option is +B which adds pointer device using absolute +coordinates. Such devices function better than relative coordinate +devices (such as a standard mouse) since many methods of exporting +guest graphics (such as VNC) work better in this mode. Note that this +is independent of the actual pointer device you are using on the +host/client side. + +Host devices can also be passed through in this way, by specifying +host:USBID, where USBID is of the form xxxx:yyyy. The USBID can +typically be found by using lsusb or usb-devices. + +The form usbdevice=DEVICE is also accepted for backwards compatibility. + +More valid options can be found in the "usbdevice" section of the qemu +documentation. =back diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index a98705e..7195655 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1520,8 +1520,23 @@ skip_vfb: xlu_cfg_replace_string (config, "serial", &b_info->u.hvm.serial, 0); xlu_cfg_replace_string (config, "boot", &b_info->u.hvm.boot, 0); xlu_cfg_get_defbool(config, "usb", &b_info->u.hvm.usb, 0); - xlu_cfg_replace_string (config, "usbdevice", - &b_info->u.hvm.usbdevice, 0); + switch (xlu_cfg_get_list_as_string_list(config, "usbdevice", + &b_info->u.hvm.usbdevice_list, + 1)) + { + + case 0: break; /* Success */ + case ESRCH: break; /* Option not present */ + case EINVAL: + /* If it's not a valid list, try reading it as an atom, falling through to + * an error if it fails */ + if (!xlu_cfg_replace_string(config, "usbdevice", &b_info->u.hvm.usbdevice, 0)) + break; + /* FALLTHRU */ + default: + fprintf(stderr,"xl: Unable to parse usbdevice.\n"); + exit(-ERROR_FAIL); + } xlu_cfg_replace_string (config, "soundhw", &b_info->u.hvm.soundhw, 0); xlu_cfg_get_defbool(config, "xen_platform_pci", &b_info->u.hvm.xen_platform_pci, 0); -- 1.7.9.5