mirror of
https://github.com/xen-project/xen.git
synced 2026-10-30 03:00:05 +01:00
libxl: Provide more formal libxl__ctx_lock and _unlock
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@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
This commit is contained in:
1 parent
8fc051a10f
commit
2fe29aed9d
1 file changed
+13
-10
@@ -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
|
||||
@@ -753,16 +754,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))
|
||||
|
||||
|
||||
/*
|
||||
|
||||