|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 03/11] libxl: add generic function to get and free device list
On Mon, Jul 10, 2017 at 3:22 PM, Oleksandr Grytsov <al1img@xxxxxxxxx> wrote:
> On Thu, Jul 6, 2017 at 6:29 PM, Wei Liu <wei.liu2@xxxxxxxxxx> wrote:
>> On Tue, Jun 27, 2017 at 01:03:19PM +0300, Oleksandr Grytsov wrote:
>>> From: Oleksandr Grytsov <oleksandr_grytsov@xxxxxxxx>
>>>
>>> Add libxl__device_list, libxl__device_list_free.
>>> Device list is created from libxl xen store entries.
>>> In order to fill libxl device structure from xen store,
>>> the device handling framework extended with from_xenstore callback.
>>> On this callback libxl_device shall be filled with data from
>>> be xen store directory.
>>>
>>> Signed-off-by: Oleksandr Grytsov <oleksandr_grytsov@xxxxxxxx>
>>> ---
>>> tools/libxl/libxl_device.c | 76
>>> ++++++++++++++++++++++++++++++++++++++++++++
>>> tools/libxl/libxl_internal.h | 8 +++++
>>> tools/libxl/libxl_vdispl.c | 17 ++++++++--
>>> 3 files changed, 98 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
>>> index 00356af..8bcfa2b 100644
>>> --- a/tools/libxl/libxl_device.c
>>> +++ b/tools/libxl/libxl_device.c
>>> @@ -1793,6 +1793,82 @@ out:
>>> return AO_CREATE_FAIL(rc);
>>> }
>>>
>>> +void* libxl__device_list(const struct libxl_device_type *dt,
>>> + libxl_ctx *ctx, uint32_t domid, int *num)
>>
>> It should probably take a libxl__gc *gc here.
>>
>>> +{
>>> + GC_INIT(ctx);
>>> +
>>
>> And omit the GC_INIT and GC_FREE.
>>
>
> In this case I should move GC_INIT and GC_FREE to above function:
>
> libxl_device_vdispl_list(libxl_ctx *ctx, uint32_t domid, int *num)
> {
> GC_INIT(ctx);
>
>
> }
>
It means for each device where getting device list is required there will be
GC_INIT(ctc)
libxl__device_list(gc, ...)
GC_FREE
instead of just:
libxl__device_list(ctx, ...);
>>> + void *r = NULL;
>>> + void *list = NULL;
>>> + void *item = NULL;
>>> + char *libxl_path;
>>> + char *be_path;
>>> + char** dir = NULL;
>>> + unsigned int ndirs = 0;
>>> + int rc;
>>> +
>>> + *num = 0;
>>> +
>>> + libxl_path = GCSPRINTF("%s/device/%s",
>>> + libxl__xs_libxl_path(gc, domid), dt->type);
>>> +
>>> + dir = libxl__xs_directory(gc, XBT_NULL, libxl_path, &ndirs);
>>> +
>>> + if (dir && ndirs) {
>>> + list = malloc(dt->dev_elem_size * ndirs);
>>
>> Also please use libxl__malloc here.
>
>
>
> --
> Best Regards,
> Oleksandr Grytsov.
--
Best Regards,
Oleksandr Grytsov.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |