aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenstore/xenstored_core.h
diff options
context:
space:
mode:
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>2005-07-26 15:20:09 +0000
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>2005-07-26 15:20:09 +0000
commitef071736546681facfdc36617632bdafd6c4d4a4 (patch)
tree49b258982283aa0aa0b9017834b6dbffa92b4927 /tools/xenstore/xenstored_core.h
parente04c630cb24b65d871f061074bea23174cadf841 (diff)
downloadxen-ef071736546681facfdc36617632bdafd6c4d4a4.tar.gz
xen-ef071736546681facfdc36617632bdafd6c4d4a4.tar.bz2
xen-ef071736546681facfdc36617632bdafd6c4d4a4.zip
Change watches: operations block until everyone has acked.
Watch events are no longer sent to self Watches no longer take a priority async and asyncwait commands for xs_test, now we need to continue despite blocking ops. Print test name at end of verbose run on failure. Use --trace-file arg to xenstored when testing Signed-off-by: Rusty Russel <rusty@rustcorp.com.au> Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
Diffstat (limited to 'tools/xenstore/xenstored_core.h')
-rw-r--r--tools/xenstore/xenstored_core.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/xenstore/xenstored_core.h b/tools/xenstore/xenstored_core.h
index 75a9bfe0a6..61d47b5342 100644
--- a/tools/xenstore/xenstored_core.h
+++ b/tools/xenstore/xenstored_core.h
@@ -51,6 +51,8 @@ enum state
{
/* Blocked by transaction. */
BLOCKED,
+ /* Waiting for watchers to ack event we caused */
+ WATCHED,
/* Completed */
OK,
};
@@ -71,6 +73,12 @@ struct connection
/* Node we are waiting for (if state == BLOCKED) */
char *blocked_by;
+ /* Are we waiting for watches to be acked from an event we caused? */
+ unsigned int watches_unacked;
+
+ /* Type of ack to send once watches fired. */
+ enum xsd_sockmsg_type watch_ack;
+
/* Is this a read-only connection? */
bool can_write;
@@ -92,10 +100,14 @@ struct connection
/* The domain I'm associated with, if any. */
struct domain *domain;
+ /* My watches. */
+ struct list_head watches;
+
/* Methods for communicating over this connection: write can be NULL */
connwritefn_t *write;
connreadfn_t *read;
};
+extern struct list_head connections;
/* Return length of string (including nul) at this offset. */
unsigned int get_string(const struct buffered_data *data,