All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony PERARD <anthony.perard@citrix.com>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: Ian Jackson <Ian.Jackson@eu.citrix.com>,
	Xen Devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH V2 4/9] libxl_qmp: Introduces helpers to create an argument list.
Date: Tue, 25 Sep 2012 15:45:50 +0100	[thread overview]
Message-ID: <5061C39E.3070904@citrix.com> (raw)
In-Reply-To: <1348563254.3452.120.camel@zakaz.uk.xensource.com>

On 09/25/2012 09:54 AM, Ian Campbell wrote:
> On Mon, 2012-09-17 at 19:22 +0100, Anthony PERARD wrote:
>> Those functions will be used to create a "list" of parameters that contain more
>> than just strings. This list is converted by qmp_send to a string to be sent to
>> QEMU.
>>
>> Those functions will be used in the next two patches, so right now there are
>> not compiled.
>>
>> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
>> ---
>>  tools/libxl/libxl_qmp.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 53 insertions(+)
>>
>> diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c
>> index 07a8bd5..1dd5c6c 100644
>> --- a/tools/libxl/libxl_qmp.c
>> +++ b/tools/libxl/libxl_qmp.c
>> @@ -623,6 +623,59 @@ static void qmp_free_handler(libxl__qmp_handler *qmp)
>>      free(qmp);
>>  }
>>  
>> +#if 0
>> +/*
>> + * QMP Parameters Helpers
>> + * Those functions does not use the gc, because of the internal usage of
>> + * flexarray that does not support it.
>> + * The allocated *param need to be free with libxl__json_object_free(gc, param)
>> + */
>> +static void qmp_parameters_common_add(libxl__gc *gc,
>> +                                      libxl__json_object **param,
>> +                                      const char *name,
>> +                                      libxl__json_object *obj)
>> +{
>> +    libxl__json_map_node *arg = NULL;
>> +
>> +    if (!*param) {
>> +        *param = libxl__json_object_alloc(NOGC, JSON_MAP);
>> +    }
>> +
>> +    arg = libxl__zalloc(NOGC, sizeof(*arg));
>> +
>> +    arg->map_key = libxl__strdup(NOGC, name);
>> +    arg->obj = obj;
>> +
>> +    flexarray_append((*param)->u.map, arg);
>> +}
>> +
>> +static void qmp_parameters_add_string(libxl__gc *gc,
>> +                                      libxl__json_object **param,
>> +                                      const char *name, const char *argument)
>> +{
>> +    libxl__json_object *obj;
>> +
>> +    obj = libxl__json_object_alloc(NOGC, JSON_STRING);
>> +    obj->u.string = libxl__strdup(NOGC, argument);
>> +
>> +    qmp_parameters_common_add(gc, param, name, obj);
>> +}
>> +
>> +static void qmp_parameters_add_bool(libxl__gc *gc,
>> +                                    libxl__json_object **param,
>> +                                    const char *name, bool b)
>> +{
>> +    libxl__json_object *obj;
>> +
>> +    obj = libxl__json_object_alloc(NOGC, JSON_TRUE);
> 
> This is pre-existing, but treating JSON_TRUE and JSON_FALSE as distinct
> node types and not specific values of the (currently non-existent)
> JSON_BOOL type is a bit odd.

It was to save a bit of memory, and I probably follow another example
when I wrote those JSON_{TRUE,FALSE}.

I'll add another patch to introduce JSON_BOOL and remove those separated
true/false.

> I noticed it because you don't use the b param here... 

:(.

>> +    qmp_parameters_common_add(gc, param, name, obj);
>> +}
>> +
>> +#define QMP_PARAMETERS_SPRINTF(gc, args, name, format, ...) \
>> +    qmp_parameters_add_string(gc, args, name, \
>> +                              libxl__sprintf(gc, format, __VA_ARGS__))
> 
> I think it would be valid, and in keeping with the similar GC_SPRINTFOO
> macros, to make gc and perhaps args required in the calling environment
> rather than passing them, if you wanted to.

Seams fair to have gc required in the caller but I think I'll keep args
as a parameter of the macro.

Thanks,

-- 
Anthony PERARD

  reply	other threads:[~2012-09-25 14:45 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-17 18:22 [PATCH V2 0/9] Set dirty log on qemu-xen Anthony PERARD
2012-09-17 18:22 ` [PATCH V2 1/9] libxl_json: Use libxl alloc function with NOGC Anthony PERARD
2012-09-25  8:39   ` Ian Campbell
2012-09-25 13:54     ` Anthony PERARD
2012-09-17 18:22 ` [PATCH V2 2/9] libxl_json: Export json_object related function Anthony PERARD
2012-09-25  8:40   ` Ian Campbell
2012-09-17 18:22 ` [PATCH V2 3/9] libxl_json: Introduce libxl__json_object_to_yajl_gen Anthony PERARD
2012-09-25  8:44   ` Ian Campbell
2012-09-25 14:20     ` Anthony PERARD
2012-09-25 14:32       ` Ian Campbell
2012-09-17 18:22 ` [PATCH V2 4/9] libxl_qmp: Introduces helpers to create an argument list Anthony PERARD
2012-09-25  8:54   ` Ian Campbell
2012-09-25 14:45     ` Anthony PERARD [this message]
2012-09-25  9:06   ` Ian Campbell
2012-09-17 18:22 ` [PATCH V2 5/9] libxl_qmp: Use qmp_parameters_* functions for param list of a QMP command Anthony PERARD
2012-09-25  8:56   ` Ian Campbell
2012-09-17 18:22 ` [PATCH V2 6/9] libxl_qmp: Simplify run of single QMP commands Anthony PERARD
2012-09-25  8:57   ` Ian Campbell
2012-09-17 18:22 ` [PATCH V2 7/9] libxl_qmp: Introduce libxl__qmp_set_global_dirty_log Anthony PERARD
2012-09-25  9:06   ` Ian Campbell
2012-09-25  9:10     ` Ian Campbell
2012-09-25 14:51       ` Anthony PERARD
2012-09-17 18:22 ` [PATCH V2 8/9] libxl_dom: Call the right switch logdirty for the right DM Anthony PERARD
2012-09-25  9:22   ` Ian Campbell
2012-09-17 18:22 ` [PATCH V2 9/9] libxl: Allow migration with qemu-xen Anthony PERARD
2012-09-25  9:23   ` Ian Campbell
2012-09-25 14:53     ` Anthony PERARD

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=5061C39E.3070904@citrix.com \
    --to=anthony.perard@citrix.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=Ian.Jackson@eu.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.