|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V7 3/7] libxl: add pvusb API
On 13/10/15 02:46, Chun Yan Liu wrote:
>
>
> On 10/12/2015 09:46 PM, George Dunlap wrote:
>> On 12/10/15 08:19, Chun Yan Liu wrote:
>>>>> +
>>>>> + usbinfo->devnum = usb->u.hostdev.hostaddr;
>>>>> + usbinfo->busnum = usb->u.hostdev.hostbus;
>>>>> +
>>>>> + busid = usb_busaddr_to_busid(gc, usb->u.hostdev.hostbus,
>>>>> + usb->u.hostdev.hostaddr);
>>>>> + if (!busid) {
>>>>> + rc = ERROR_FAIL;
>>>>> + goto out;
>>>>> + }
>>>>> +
>>>>> + filename = GCSPRINTF(SYSFS_USB_DEV"/%s/idVendor", busid);
>>>>> + if (!libxl_read_sysfs_file_contents(ctx, filename, &buf, NULL))
>>>>> + sscanf(buf, "%" SCNx16, &usbinfo->idVendor);
>>>>> +
>>>>> + filename = GCSPRINTF(SYSFS_USB_DEV"/%s/idProduct", busid);
>>>>> + if (!libxl_read_sysfs_file_contents(ctx, filename, &buf, NULL))
>>>>> + sscanf(buf, "%" SCNx16, &usbinfo->idProduct);
>>>>> +
>>>>> + filename = GCSPRINTF(SYSFS_USB_DEV"/%s/manufacturer", busid);
>>>>> + if (!libxl_read_sysfs_file_contents(ctx, filename, &buf,
>>>>> &buflen) &&
>>>>> + buflen > 0) {
>>>>> + /* replace \n to \0 */
>>>>> + if (((char *)buf)[buflen - 1] == '\n')
>>>>> + ((char *)buf)[buflen - 1] = '\0';
>>>>> + usbinfo->manuf = libxl__strdup(NOGC, buf);
>>>>> + }
>>>>> +
>>>>> + filename = GCSPRINTF(SYSFS_USB_DEV"/%s/product", busid);
>>>>> + if (!libxl_read_sysfs_file_contents(ctx, filename, &buf,
>>>>> &buflen) &&
>>>>> + buflen > 0) {
>>>>> + /* replace \n to \0 */
>>>>> + if (((char *)buf)[buflen - 1] == '\n')
>>>>> + ((char *)buf)[buflen - 1] = '\0';
>>>>> + usbinfo->prod = libxl__strdup(NOGC, buf);
>>>>> + }
>>>> Basically, starting here, we have information which won't be
>>>> available
>>>> if we're using a pvusb driver domain.
>>>> This information is nice-to-have, but I don't think this
>>>> information is
>>>> directly relevant to libxl or xl; the funcitonality to get this
>>>> information is available from other libraries like libusb. I'm
>>>> inclined
>>>> to say that if we want to have pvusb driver domains (and I think we
>>>> do),
>>>> we should just get rid of this information.
>>> For command 'xl usb-list', those information should be reported to user.
>>> Do you mean we could call libusb to get thoes information directly in
>>> xl toolstack and get rid of this function?
>>>
>>> I think we can keep the function, since every other device type has the
>>> function XXX_getinfo. But here we could check backend_domid, for
>>> backend=dom0, doing above work; for backend!=dom0 (e.g. pvusb
>>> driver domain, no matter how, it should also be able to let users
>>> getting
>>> those information. Can add code in future.)
>> Does xl need that information? Can't the user get that information from
>> lsusb?
>>
>> In any case, I can see why it would be *useful* to have in xl. But
>> about having it in libxl, I think this question sort of goes along with
>> the question about the next patch -- whether libxl should be in the
>> business of providing general information about the USB devices it's
>> handling, or whether it should limit itself to doing what is absolutely
>> necessary to talk to usbback.
>>
>> There's a part of me that sees the point of it: it's not actually that
>> much extra code (at least for Linux), and it makes it easy to add some
>> very useful features to xl.
>>
>> On the other hand, it's not portable to other OSes. At the moment of
>> course pvusb isn't portable either, but once we have qemu USB (providing
>> either emulated or PV usb) then I *think* most of the other
>> functionality will Just Work on any platform that can compile qemu
>> (incl. FreeBSD, NetBSD, &c), won't it? The code you're introducing here
>> would have to be re-implented for those platforms, and for every new
>> platform that wanted to include this functionality, wouldn't it?
> So, about the portability problem, I think it's back to: do need to
> update code to call libusb instead of reading sysfs now? Except
> for this function, still have places reading sysfs to get hostbus,
> hostaddr, vendorId, deviceId. Those are not portable for other
> platform.
I realize I didn't give you very clear guidance; I guess I was hoping to
get an opinion from the tools maintainers. Or perhaps, I was hoping to
let them be the "bad guys" and say, "You can't have this feature in
libxl", so I wouldn't have to. :-)
In the absence of guidance to the contrary, I suggest that patch series
should focus on getting the core pvusb functionality in, without the
extra usb-querying bits. Then we can discuss a further series which
either adds the usb querying functionality to libxl, or implement it in
xl using libusb.
-George
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |