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

Re: [Xen-devel] [PATCH 13/15] libxl: make LIBXL_INIT_GC a statement, not an initialiser



On Mon, 2011-12-05 at 18:10 +0000, Ian Jackson wrote:
> Previously LIBXL_INIT_GC was an initialiser, which you were expected
> to use like this:
>     libxl__gc gc = LIBXL_INIT_GC(ctx);
> 
> But we are going to want to put things in the gc which are to be
> initialised using other macros.  That means that LIBXL_INIT_GC has to
> become a statement too.  So instead, we make it so that it's used like this:
>     libxl_gc gc;
>     LIBXL_INIT_GC(gc,ctx);
> 
> In fact there is only one caller now, GC_INIT,

Maybe we should just fold LIBXL_INIT_GC into GC_INIT then?

>  which uses this trick:
>     libxl_gc gc[1];
>     LIBXL_INIT_GC(gc[0],ctx);

Ian.

> 
> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> ---
>  tools/libxl/libxl_internal.h |    9 +++++++--
>  1 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> index 1d1dc35..d015c7c 100644
> --- a/tools/libxl/libxl_internal.h
> +++ b/tools/libxl/libxl_internal.h
> @@ -145,7 +145,12 @@ typedef struct {
>      libxl_ctx *owner;
>  } libxl__gc;
>  
> -#define LIBXL_INIT_GC(ctx) (libxl__gc){ .alloc_maxsize = 0, .alloc_ptrs = 0, 
> .owner = ctx }
> +#define LIBXL_INIT_GC(gc,ctx) do{               \
> +        (gc).alloc_maxsize = 0;                 \
> +        (gc).alloc_ptrs = 0;                    \
> +        (gc).owner = (ctx);                     \
> +    } while(0)
> +
>  static inline libxl_ctx *libxl__gc_owner(libxl__gc *gc)
>  {
>      return gc->owner;
> @@ -676,7 +681,7 @@ libxl__device_model_version_running(libxl__gc *gc, 
> uint32_t domid);
>   * as a local variable.
>   */
>  
> -#define GC_INIT(ctx)  libxl__gc gc[1] = { LIBXL_INIT_GC(ctx) }
> +#define GC_INIT(ctx)  libxl__gc gc[1]; LIBXL_INIT_GC(gc[0],ctx)
>  #define GC_FREE       libxl__free_all(gc)
>  #define CTX           libxl__gc_owner(gc)
>  



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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