[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 16/19] libxl: suspend: Abolish usleeps in domain suspend wait
Ian Jackson writes ("Re: [PATCH 16/19] libxl: suspend: Abolish usleeps in domain suspend wait"): > Reading xenstored_core.c suggests both read and write give EINVAL. So > making xswait work for it would indeed involve special-casing @ in > libxl. I looked at how this would seem in the API and it's very simple. See below. I think I should probably add this to my series and use it in the later patch. Ian. From 41abced84e669449a926ca38a78194a2188c7cff Mon Sep 17 00:00:00 2001 From: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Date: Fri, 14 Mar 2014 17:38:38 +0000 Subject: [PATCH] libxl: events: libxl__xswait* support @paths Special-case paths starting with '@' in libxl__xswait. Attempting to read these from xenstore gives EINVAL. Callers waiting for (say) @releaseDomain will be checking for some condition which can be observed other than by looking at xenstore. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> --- tools/libxl/libxl_aoutils.c | 8 ++++++-- tools/libxl/libxl_internal.h | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/libxl/libxl_aoutils.c b/tools/libxl/libxl_aoutils.c index 477717b..1c9eb9e 100644 --- a/tools/libxl/libxl_aoutils.c +++ b/tools/libxl/libxl_aoutils.c @@ -69,8 +69,12 @@ void xswait_xswatch_callback(libxl__egc *egc, libxl__ev_xswatch *xsw, int rc; const char *data; - rc = libxl__xs_read_checked(gc, XBT_NULL, xswa->path, &data); - if (rc) { xswait_report_error(egc, xswa, rc); return; } + if (xswa->path[0] == '@') { + data = 0; + } else { + rc = libxl__xs_read_checked(gc, XBT_NULL, xswa->path, &data); + if (rc) { xswait_report_error(egc, xswa, rc); return; } + } xswa->callback(egc, xswa, 0, data); } diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 644fcee..dc3d34c 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1110,6 +1110,8 @@ typedef struct libxl__xswait_state libxl__xswait_state; * This HAS been logged. * xswait will not continue (but calling libxl__xswait_stop is OK). * + * xswait.path may start with with '@', in which case no read is done + * and the callback will always get data==0. */ typedef void libxl__xswait_callback(libxl__egc *egc, libxl__xswait_state *xswa, int rc, const char *data); -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |