From: George Dunlap <george.dunlap@citrix.com>
To: Chunyan Liu <cyliu@suse.com>, xen-devel@lists.xen.org
Cc: jgross@suse.com, wei.liu2@citrix.com, ian.campbell@citrix.com,
george.dunlap@eu.citrix.com, Ian.Jackson@eu.citrix.com,
jfehlig@suse.com
Subject: Re: [PATCH V7 4/7] libxl: add libxl_device_usb_assignable_list API
Date: Thu, 1 Oct 2015 12:32:49 +0100 [thread overview]
Message-ID: <560D19E1.5010400@citrix.com> (raw)
In-Reply-To: <1443147102-6471-5-git-send-email-cyliu@suse.com>
On 25/09/15 03:11, Chunyan Liu wrote:
> Add API for listing assignable USB devices info.
> Assignable USB device means the USB device type is assignable and
> it's not assigned to any guest yet.
>
> Signed-off-by: Chunyan Liu <cyliu@suse.com>
> ---
> This could be squashed with previous patch. Split because there is
> some dispute on this. If this is acceptable, could be squashed,
> otherwise could be removed.
>
> tools/libxl/libxl.h | 3 +++
> tools/libxl/libxl_pvusb.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 58 insertions(+)
>
> diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
> index 633bfc1..c41b9de 100644
> --- a/tools/libxl/libxl.h
> +++ b/tools/libxl/libxl.h
> @@ -1450,6 +1450,9 @@ int libxl_device_usbctrl_getinfo(libxl_ctx *ctx, uint32_t domid,
> libxl_usbctrlinfo *usbctrlinfo);
>
> /* USB Devices */
> +libxl_device_usb *
> +libxl_device_usb_assignable_list(libxl_ctx *ctx, int *num);
> +
> int libxl_device_usb_add(libxl_ctx *ctx, uint32_t domid, libxl_device_usb *usb,
> const libxl_asyncop_how *ao_how)
> LIBXL_EXTERNAL_CALLERS_ONLY;
> diff --git a/tools/libxl/libxl_pvusb.c b/tools/libxl/libxl_pvusb.c
> index d4b997f..b683e60 100644
> --- a/tools/libxl/libxl_pvusb.c
> +++ b/tools/libxl/libxl_pvusb.c
> @@ -573,6 +573,61 @@ static bool is_usb_assignable(libxl__gc *gc, libxl_device_usb *usb)
> return classcode != USBHUB_CLASS_CODE;
> }
>
> +libxl_device_usb *
> +libxl_device_usb_assignable_list(libxl_ctx *ctx, int *num)
> +{
> + GC_INIT(ctx);
> + libxl_device_usb *usbs = NULL;
> + libxl_device_usb *assigned;
> + int num_assigned;
> + struct dirent *de;
> + DIR *dir;
> +
> + *num = 0;
> +
> + if (get_assigned_devices(gc, &assigned, &num_assigned) < 0) {
> + LOG(ERROR, "cannot determine if device is assigned");
> + goto out;
> + }
> +
> + if (!(dir = opendir(SYSFS_USB_DEV)))
> + goto out;
> +
> + while ((de = readdir(dir))) {
> + libxl_device_usb *usb;
> + uint8_t bus = -1, addr = -1;
> +
> + if (!de->d_name)
> + continue;
> +
> + usb_busaddr_from_busid(gc, de->d_name, &bus, &addr);
> + if (bus < 1 || addr < 1)
> + continue;
> +
> + GCNEW(usb);
> + usb->u.hostdev.hostbus = bus;
> + usb->u.hostdev.hostaddr = addr;
> +
> + if (!is_usb_assignable(gc, usb))
> + continue;
> +
> + if (is_usbdev_in_array(assigned, num_assigned, usb))
> + continue;
Why are we allocating a new usb struct every loop, and then never using
it again? Why not just put it on the stack and re-use it?
Other than that, looks OK.
-George
next prev parent reply other threads:[~2015-10-01 11:32 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-25 2:11 [PATCH V7 0/7] xen pvusb toolstack work Chunyan Liu
2015-09-25 2:11 ` [PATCH V7 1/7] libxl: export some functions for pvusb use Chunyan Liu
2015-09-25 2:11 ` [PATCH V7 2/7] libxl_read_file_contents: add new entry to read sysfs file Chunyan Liu
2015-09-30 11:22 ` George Dunlap
2015-10-02 13:25 ` Ian Campbell
2015-09-25 2:11 ` [PATCH V7 3/7] libxl: add pvusb API Chunyan Liu
2015-09-30 17:55 ` George Dunlap
2015-10-02 13:31 ` Ian Campbell
2015-10-09 8:12 ` Chun Yan Liu
2015-10-12 7:19 ` Chun Yan Liu
2015-10-12 13:46 ` George Dunlap
2015-10-13 1:46 ` Chun Yan Liu
2015-10-13 13:15 ` George Dunlap
2015-10-13 13:19 ` George Dunlap
2015-10-13 13:30 ` Ian Campbell
2015-10-14 2:29 ` Chun Yan Liu
2015-10-08 14:41 ` Ian Jackson
2015-10-08 14:54 ` Ian Campbell
2015-10-08 15:16 ` Ian Jackson
2015-10-12 7:00 ` Chun Yan Liu
2015-09-25 2:11 ` [PATCH V7 4/7] libxl: add libxl_device_usb_assignable_list API Chunyan Liu
2015-10-01 11:32 ` George Dunlap [this message]
2015-09-25 2:11 ` [PATCH V7 5/7] xl: add pvusb commands Chunyan Liu
2015-10-01 17:02 ` George Dunlap
2015-10-02 13:35 ` Ian Campbell
2015-10-02 15:17 ` George Dunlap
2015-10-02 15:29 ` Ian Campbell
2015-10-09 7:15 ` Chun Yan Liu
2015-09-25 2:11 ` [PATCH V7 6/7] xl: add usb-assignable-list command Chunyan Liu
2015-10-06 16:55 ` George Dunlap
2015-10-07 8:40 ` Ian Campbell
2015-10-07 9:55 ` Juergen Gross
2015-10-07 10:08 ` Ian Campbell
2015-10-07 10:10 ` George Dunlap
2015-10-07 10:15 ` George Dunlap
2015-10-07 10:35 ` Christiane Groß
2015-10-07 11:09 ` Ian Campbell
2015-10-07 11:20 ` George Dunlap
2015-10-07 11:25 ` Juergen Gross
2015-10-07 11:32 ` George Dunlap
2015-10-07 11:37 ` Ian Campbell
2015-10-07 11:39 ` Juergen Gross
2015-10-07 11:43 ` Ian Campbell
2015-10-07 11:39 ` Ian Campbell
2015-10-07 11:49 ` Juergen Gross
2015-10-07 11:55 ` Ian Campbell
2015-10-07 12:05 ` Juergen Gross
2015-10-07 12:51 ` Ian Campbell
2015-10-07 13:21 ` George Dunlap
2015-10-07 13:54 ` Juergen Gross
2015-10-07 14:05 ` Ian Campbell
2015-10-07 14:26 ` Juergen Gross
2015-10-07 14:35 ` George Dunlap
2015-10-07 14:47 ` Juergen Gross
2015-10-07 15:03 ` George Dunlap
2015-10-07 15:13 ` Juergen Gross
2015-10-07 14:10 ` George Dunlap
2015-09-25 2:11 ` [PATCH V7 7/7] domcreate: support pvusb in configuration file Chunyan Liu
2015-10-07 15:06 ` George Dunlap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=560D19E1.5010400@citrix.com \
--to=george.dunlap@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=cyliu@suse.com \
--cc=george.dunlap@eu.citrix.com \
--cc=ian.campbell@citrix.com \
--cc=jfehlig@suse.com \
--cc=jgross@suse.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.