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@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
---
v3: New patch in this version of the series.
This commit is contained in:
Ian Jackson authored and Ian Jackson committed 2014-03-17 15:53:59 +00:00
1 parent eeb157e96d
commit ffb46d64c3
2 files changed
+8 -2

No files matched your search

+6 -2
View File
@@ -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);
}
+2
View File
@@ -1130,6 +1130,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);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.