xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Ian Campbell <Ian.Campbell@citrix.com>
To: Ian Jackson <Ian.Jackson@eu.citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>, xen-devel@lists.xen.org
Subject: Re: [PATCH V4 03/24] libxl.h: document the paradigm of using libxl types
Date: Wed, 7 May 2014 10:53:48 +0100	[thread overview]
Message-ID: <1399456428.3014.235.camel@kazak.uk.xensource.com> (raw)
In-Reply-To: <21352.57268.452232.280079@mariner.uk.xensource.com>

On Tue, 2014-05-06 at 14:12 +0100, Ian Jackson wrote:
> Ian Campbell writes ("Re: [PATCH V4 03/24] libxl.h: document the paradigm of using libxl types"):
> > On Thu, 2014-05-01 at 13:58 +0100, Wei Liu wrote:
> > > Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> > 
> > I think this reflects reality even if it's not what we would actually
> > have wanted.
> 
> If we intend to change it, we should say so.
> 
> > > + * The paradigm of using libxl types is that user always calls "init"
> > > + * function before using a type, and always calls "dispose" after using
> > > + * a type to clean up, regardless of the operations on this type
> > > + * succeed or fail. See xl code for examples.
> 
> Here's a version which reads slightly better to a native speaker and
> is IMO slightly less ambiguous:
> 
>   * IDL-generated libxl types should be used as follows: the user must
>   * always call the "init" function before using a type, even if the
>   * variable is simply being passed by reference as an out parameter
>   * to a libxl function.  The user must always calls "dispose" exactly
>   * once afterwards, to clean up, regardless of whether operations on
>   * this object succeeded or failed.  See the xl code for examples.
> 
> I would add:
> 
>   * "init" is idempotent.  We intend that "dispose" will become
>   * idempotent, but this is not currently the case.

I suppose this last bit corresponds to "if we intend to change it" so
should be included iff that is the case.

I can see that it would be desirable to make that change, but I'm not
sure how any application could ever make use of it, since older versions
will crash horribly, and if they were to use a #ifdef
LIBXL_HAVE_IDEMPOTENT_DISPOSE, well, then they could just have called it
once.

I suppose if they only care about Xen >= the version with the change
they could make use of it.

Ian.

  parent reply	other threads:[~2014-05-07  9:53 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-01 12:57 [PATCH V4 00/24] JSON infrastructure, new "xl-json" format and domain configuration synchronization Wei Liu
2014-05-01 12:57 ` [PATCH V4 01/24] xl / libxl: push parsing of SSID and CPU pool ID down to libxl Wei Liu
2014-05-06 12:45   ` Ian Campbell
2014-05-06 13:03     ` Wei Liu
2014-05-07  9:50       ` Ian Campbell
2014-05-07 10:30         ` Wei Liu
2014-05-01 12:57 ` [PATCH V4 02/24] libxl: fix memory leak in libxl_cpuid_dispose Wei Liu
2014-05-06 12:47   ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 03/24] libxl.h: document the paradigm of using libxl types Wei Liu
2014-05-06 12:49   ` Ian Campbell
2014-05-06 13:12     ` Ian Jackson
2014-05-06 13:49       ` Wei Liu
2014-05-07  9:53       ` Ian Campbell [this message]
2014-05-01 12:58 ` [PATCH V4 04/24] libxl.h: move / add some libxl defbool #define here Wei Liu
2014-05-06 12:50   ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 05/24] libxl IDL: rename json_fn to json_gen_fn Wei Liu
2014-05-01 12:58 ` [PATCH V4 06/24] libxl_json: introduce libx__object_from_json Wei Liu
2014-05-06 12:53   ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 07/24] libxl_internal: make JSON_* types a bit-field Wei Liu
2014-05-01 12:58 ` [PATCH V4 08/24] libxl_internal: introduce libxl__json_object_is_{null, number, double} Wei Liu
2014-05-01 12:58 ` [PATCH V4 09/24] libxl_json: introduce parser functions for builtin types Wei Liu
2014-05-06 12:57   ` Ian Campbell
2014-05-06 13:06     ` Wei Liu
2014-05-07  9:57       ` Ian Campbell
2014-05-06 13:57     ` Anthony PERARD
2014-05-06 14:04       ` Wei Liu
2014-05-06 14:35         ` Anthony PERARD
2014-05-06 14:45           ` Wei Liu
2014-05-06 14:49             ` Wei Liu
2014-05-06 15:14               ` Anthony PERARD
2014-05-06 15:42                 ` Wei Liu
2014-05-06 15:59                   ` Anthony PERARD
2014-05-06 16:13                     ` Wei Liu
2014-05-12 16:43                   ` Wei Liu
2014-05-13  8:26                     ` Ian Campbell
2014-05-13  9:19                       ` Wei Liu
2014-05-13  9:32                         ` Ian Campbell
2014-05-13 10:40                           ` Wei Liu
2014-05-13 10:45                             ` Ian Campbell
2014-05-13 10:51                               ` Wei Liu
2014-05-13 10:55                                 ` Ian Campbell
2014-05-13 11:03                                   ` Wei Liu
2014-05-13 11:13                                     ` Ian Campbell
2014-05-13 11:38                                       ` Wei Liu
2014-05-13 11:28                                     ` Anthony PERARD
2014-05-13 11:40                                       ` Wei Liu
2014-05-13 11:54                                         ` Ian Campbell
2014-05-13 11:58                                           ` Wei Liu
2014-05-01 12:58 ` [PATCH V4 10/24] libxl_json: allow basic JSON type objects generation Wei Liu
2014-05-06 13:02   ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 11/24] libxl/gentypes.py: include discriminator in JSON output Wei Liu
2014-05-06 13:03   ` Ian Campbell
2014-05-06 13:09     ` Wei Liu
2014-05-07 10:00       ` Ian Campbell
2014-05-07 10:35         ` Wei Liu
2014-05-07 10:45           ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 12/24] libxl IDL: generate code to parse libxl__json_object to libxl_FOO struct Wei Liu
2014-05-06 13:45   ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 13/24] libxl/gentest.py: test JSON parser Wei Liu
2014-05-06 13:46   ` Ian Campbell
2014-05-06 14:11     ` Wei Liu
2014-05-01 12:58 ` [PATCH V4 14/24] libxl: introduce libxl_key_value_list_length Wei Liu
2014-05-06 13:50   ` Ian Campbell
2014-05-06 14:13     ` Wei Liu
2014-05-01 12:58 ` [PATCH V4 15/24] libxl: introduce libxl_cpuid_policy_list_length Wei Liu
2014-05-06 13:51   ` Ian Campbell
2014-05-06 14:17     ` Wei Liu
2014-05-01 12:58 ` [PATCH V4 16/24] libxl: copy function for builtin types Wei Liu
2014-05-06 14:03   ` Ian Campbell
2014-05-06 14:36     ` Wei Liu
2014-05-07 10:05       ` Ian Campbell
2014-05-07 10:19         ` Wei Liu
2014-05-07 10:40           ` Ian Campbell
2014-05-07 10:47     ` Ian Jackson
2014-05-07 10:57       ` Ian Campbell
2014-05-07 12:55         ` Wei Liu
2014-05-07 13:10           ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 17/24] libxl IDL: generate deep copy functions Wei Liu
2014-05-06 14:06   ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 18/24] libxl/gentest.py: test " Wei Liu
2014-05-06 14:06   ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 19/24] xl: introduce and use "xl-json" format Wei Liu
2014-05-06 14:26   ` Ian Campbell
2014-05-06 15:17     ` Wei Liu
2014-05-06 16:35       ` Wei Liu
2014-05-07 10:11       ` Ian Campbell
2014-05-07 11:18         ` Ian Jackson
2014-05-07 11:20         ` Wei Liu
2014-05-07 11:30           ` Ian Campbell
2014-05-07 13:00             ` Wei Liu
2014-05-07 13:08               ` Ian Campbell
2014-05-07 11:16       ` Ian Jackson
2014-05-07 11:20         ` Ian Campbell
2014-05-07 12:56         ` Wei Liu
2014-05-01 12:58 ` [PATCH V4 20/24] xl: introduce load/save_domain_config Wei Liu
2014-05-06 14:28   ` Ian Campbell
2014-05-06 15:03     ` Wei Liu
2014-05-07 10:12       ` Ian Campbell
2014-05-01 12:58 ` [PATCH V4 21/24] xl: update domain configuration when running mem-set and mem-max Wei Liu
2014-05-06 14:30   ` Ian Campbell
2014-05-06 14:56     ` Wei Liu
2014-05-01 12:58 ` [PATCH V4 22/24] xl: update domain configuration when we hotplug a device Wei Liu
2014-05-06 15:44   ` Ian Campbell
2014-05-06 15:58     ` Wei Liu
2014-05-07 10:16       ` Ian Campbell
2014-05-06 16:57   ` David Vrabel
2014-05-06 17:13     ` Wei Liu
2014-05-07 10:21       ` David Vrabel
2014-05-07 10:42         ` Ian Campbell
2014-05-07 10:59       ` Andrew Cooper
2014-05-01 12:58 ` [PATCH V4 23/24] libxl: consider force removal of device successful Wei Liu
2014-05-06 15:48   ` Ian Campbell
2014-05-06 16:04     ` Wei Liu
2014-05-07 10:18       ` Ian Campbell
2014-05-07 13:09         ` Wei Liu
2014-05-01 12:58 ` [PATCH V4 24/24] xl: update configuration when we unplug a device Wei Liu
2014-05-06 15:55   ` Ian Campbell
2014-05-06 16:12     ` Wei Liu
2014-05-07 10:20       ` Ian Campbell
2014-05-01 13:02 ` [PATCH V4 00/24] JSON infrastructure, new "xl-json" format and domain configuration synchronization Wei Liu

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=1399456428.3014.235.camel@kazak.uk.xensource.com \
    --to=ian.campbell@citrix.com \
    --cc=Ian.Jackson@eu.citrix.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).