|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 19/19] libxl: provide STATE_AO_GC
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..a4b933b 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_ao) \
+ 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. */
--
1.7.2.5
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |