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

Re: [Xen-devel] [PATCH 04/10] libxl: Provide more formal libxl__ctx_lock and _unlock



On Fri, 2012-01-06 at 20:35 +0000, Ian Jackson wrote:
> Previously the only official interface for the ctx lock was the
> CTX_LOCK and CTX_UNLOCK convenience macros, which assume and use "ctx"
> from the surrounding scope.
> 
> Instead, provide libxl__ctx_lock and _unlock functions which can be
> used by these convenience macros, and other callers who have
> nonstandard requirements.
> 
> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> ---
>  tools/libxl/libxl_internal.h |   23 +++++++++++++----------
>  1 files changed, 13 insertions(+), 10 deletions(-)
> 
> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> index d681d73..1dadf15 100644
> --- a/tools/libxl/libxl_internal.h
> +++ b/tools/libxl/libxl_internal.h
> @@ -115,7 +115,8 @@ struct libxl__ctx {
>      struct xs_handle *xsh;
>  
>      pthread_mutex_t lock; /* protects data structures hanging off the ctx */
> -      /* Always use CTX_LOCK and CTX_UNLOCK to manipulate this.
> +      /* Always use libxl__ctx_lock and _unlock (or the convenience
> +       * macors CTX_LOCK and CTX_UNLOCK) to manipulate this.
>         *
>         * You may acquire this mutex recursively if it is convenient to
>         * do so.  You may not acquire this lock at the same time as any
> @@ -749,16 +750,18 @@ libxl__device_model_version_running(libxl__gc *gc, 
> uint32_t domid);
>  
>  /* Locking functions.  See comment for "lock" member of libxl__ctx. */
>  
> -#define CTX_LOCK do {                                   \
> -        int mutex_r = pthread_mutex_lock(&CTX->lock);   \
> -        assert(!mutex_r);                               \
> -    } while(0)
> +static inline void libxl__ctx_lock(libxl_ctx *ctx) {
> +    int r = pthread_mutex_lock(&ctx->lock);
> +    assert(!r);
> +}
>  
> -#define CTX_UNLOCK do {                                 \
> -        int mutex_r = pthread_mutex_unlock(&CTX->lock); \
> -        assert(!mutex_r);                               \
> -    } while(0)
> -        
> +static inline void libxl__ctx_unlock(libxl_ctx *ctx) {
> +    int r = pthread_mutex_unlock(&ctx->lock);
> +    assert(!r);
> +}
> +
> +#define CTX_LOCK (libxl__ctx_lock(CTX))
> +#define CTX_UNLOCK (libxl__ctx_unlock(CTX))
>  
> 
>  /*



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