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

Re: [Xen-devel] [PATCH 19/31] libxl: provide STATE_AO_GC



On Tue, 2012-04-10 at 20:07 +0100, Ian Jackson wrote:
> Provide a convenience macro for use in ao callback functions, and
> document that it should be used.
> 
> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> ---
>  tools/libxl/libxl_internal.h |   11 ++++++++---
>  1 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> index a8372bb..76875bb 100644
> --- a/tools/libxl/libxl_internal.h
> +++ b/tools/libxl/libxl_internal.h
> @@ -1266,9 +1266,10 @@ _hidden void libxl__egc_cleanup(libxl__egc *egc);
>   * - Note that during callback functions, two gcs are available:
>   *    - The one in egc, whose lifetime is only this callback
>   *    - The one in ao, whose lifetime is the asynchronous operation
> - *   Usually callback function should use CONTAINER_OF
> - *   to obtain its own structure, containing a pointer to the ao,
> - *   and then use the gc from that ao.
> + *   Usually callback function should use CONTAINER_OF to obtain its
> + *   own state structure, containing a pointer to the ao.  It should
> + *   then obtain the ao and use the ao's gc; this is most easily done
> + *   using the convenience macro STATE_AO_GC.
>   */
>  
>  #define AO_CREATE(ctx, domid, ao_how)                           \
> @@ -1298,6 +1299,10 @@ _hidden void libxl__egc_cleanup(libxl__egc *egc);
>  #define AO_GC                                   \
>      libxl__gc *const gc = &ao->gc
>  
> +#define STATE_AO_GC(op)                         \
> +    libxl__ao *const ao = op->ao;               \
> +    AO_GC
> +
>  
>  /* All of these MUST be called with the ctx locked.
>   * libxl__ao_inprogress MUST be called with the ctx locked exactly once. */



_______________________________________________
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®.