aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenstore/xs_test.c
diff options
context:
space:
mode:
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>2005-06-17 10:24:34 +0000
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>2005-06-17 10:24:34 +0000
commit4ddc54b2db6264de8a8809d2a8763c5f4e3f4191 (patch)
tree22569f709abb8a9b21f17bfe9c39471bc89a8cc8 /tools/xenstore/xs_test.c
parentc364cd9e1add6131c74a2507ea81ed556b0c0842 (diff)
downloadxen-4ddc54b2db6264de8a8809d2a8763c5f4e3f4191.tar.gz
xen-4ddc54b2db6264de8a8809d2a8763c5f4e3f4191.tar.bz2
xen-4ddc54b2db6264de8a8809d2a8763c5f4e3f4191.zip
bitkeeper revision 1.1713.3.5 (42b2a4e2r6SNlC_nq2hAkXEQjEFAmA)
Many files: - watch now takes a token, returned when reading watch - More tests - Fix domain shared page communication (flush output) - Add "home" path for domains - More permissions checks in various functions - Simplify watch acknowledgement code and fix occasional bug xs_watch_stress.c, 12readonly.sh, 11domain-watch.sh, 10domain-homedir.sh: new file xs_stress.c, xs_lib.h, xs_lib.c: Cleanup whitespace. ignore: Add tools/xenstore/xs_watch_stress Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
Diffstat (limited to 'tools/xenstore/xs_test.c')
-rw-r--r--tools/xenstore/xs_test.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/tools/xenstore/xs_test.c b/tools/xenstore/xs_test.c
index 4d769e220d..29929b7693 100644
--- a/tools/xenstore/xs_test.c
+++ b/tools/xenstore/xs_test.c
@@ -173,9 +173,9 @@ static void __attribute__((noreturn)) usage(void)
" getperm <path>\n"
" setperm <path> <id> <flags> ...\n"
" shutdown\n"
- " watch <path> <prio>\n"
+ " watch <path> <token> <prio>\n"
" waitwatch\n"
- " ackwatch\n"
+ " ackwatch <token>\n"
" unwatch <path> <token>\n"
" close\n"
" start <node>\n"
@@ -358,36 +358,37 @@ static void do_shutdown(unsigned int handle)
failed(handle);
}
-static void do_watch(unsigned int handle, const char *node, const char *pri)
+static void do_watch(unsigned int handle, const char *node, const char *token,
+ const char *pri)
{
- if (!xs_watch(handles[handle], node, atoi(pri)))
+ if (!xs_watch(handles[handle], node, token, atoi(pri)))
failed(handle);
}
static void do_waitwatch(unsigned int handle)
{
- char *node;
+ char **vec;
- node = xs_read_watch(handles[handle]);
- if (!node)
+ vec = xs_read_watch(handles[handle]);
+ if (!vec)
failed(handle);
if (handle)
- printf("%i:%s\n", handle, node);
+ printf("%i:%s:%s\n", handle, vec[0], vec[1]);
else
- printf("%s\n", node);
- free(node);
+ printf("%s:%s\n", vec[0], vec[1]);
+ free(vec);
}
-static void do_ackwatch(unsigned int handle)
+static void do_ackwatch(unsigned int handle, const char *token)
{
- if (!xs_acknowledge_watch(handles[handle]))
+ if (!xs_acknowledge_watch(handles[handle], token))
failed(handle);
}
-static void do_unwatch(unsigned int handle, const char *node)
+static void do_unwatch(unsigned int handle, const char *node, const char *token)
{
- if (!xs_unwatch(handles[handle], node))
+ if (!xs_unwatch(handles[handle], node, token))
failed(handle);
}
@@ -613,13 +614,13 @@ int main(int argc, char *argv[])
else if (streq(command, "shutdown"))
do_shutdown(handle);
else if (streq(command, "watch"))
- do_watch(handle, arg(line, 1), arg(line, 2));
+ do_watch(handle, arg(line, 1), arg(line, 2), arg(line, 3));
else if (streq(command, "waitwatch"))
do_waitwatch(handle);
else if (streq(command, "ackwatch"))
- do_ackwatch(handle);
+ do_ackwatch(handle, arg(line, 1));
else if (streq(command, "unwatch"))
- do_unwatch(handle, arg(line, 1));
+ do_unwatch(handle, arg(line, 1), arg(line, 2));
else if (streq(command, "close")) {
xs_daemon_close(handles[handle]);
handles[handle] = NULL;