[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH V2 1/9] libxl_json: Use libxl alloc function with NOGC.



On 09/25/2012 09:39 AM, Ian Campbell wrote:
> On Mon, 2012-09-17 at 19:22 +0100, Anthony PERARD wrote:
>> This patch makes use of the libxl allocation API and removes the check for
>> allocation failure.
>>
>> Also we don't use GC with a json_object because this structure use flexarray
>> and the latter does not use the gc.
> 
> It's not an uncommon pattern in libxl for the content of the flexarray
> to be gc'd but the actual array itself to be explicitly freed, often
> implicitly via flexarray_contents(), if that's what you want.

Trying to use flexarray_contents() in the context of json_object would
mean that I need to know when the array is filled with every things
needed. This seams a bit complicated.

> If we wanted I don't think there's any reason we couldn't make the
> flexarray take a gc and use it, that would probably make things simpler
> here and elsewhere and reduce the manual memory management (unless you
> actually want/need that for some other reason).

Having flexarray using gc seams a better idea. I will work on that as I
don't think I need to keep those object around and using NOGC was only
because of flexarray.

>> Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
>> ---
>>  tools/libxl/libxl_json.c | 37 +++++++++++--------------------------
>>  1 file changed, 11 insertions(+), 26 deletions(-)
>>
>> diff --git a/tools/libxl/libxl_json.c b/tools/libxl/libxl_json.c
>> index caa8312..9c3dca2 100644
>> --- a/tools/libxl/libxl_json.c
>> +++ b/tools/libxl/libxl_json.c
>> @@ -210,12 +210,7 @@ static libxl__json_object *json_object_alloc(libxl__gc 
>> *gc,
>>  {
>>      libxl__json_object *obj;
>>  
>> -    obj = calloc(1, sizeof (libxl__json_object));
>> -    if (obj == NULL) {
>> -        LIBXL__LOG_ERRNO(libxl__gc_owner(gc), LIBXL__LOG_ERROR,
>> -                         "Failed to allocate a libxl__json_object");
>> -        return NULL;
>> -    }
>> +    obj = libxl__zalloc(NOGC, sizeof(*obj));
> 
> So you now ignore the gc passed in, which in any case you have now
> caused to always be NOGC? Seems a bit round-about to me, why not use the
> gc parameter here?

Yes, I suppose is not necessary to use NOGC here, and leave the choice
to the caller. I just wanted to be explicit.

Thanks,

-- 
Anthony PERARD

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.