diff options
Diffstat (limited to 'tools/xenstore')
-rw-r--r-- | tools/xenstore/xenstored_core.c | 5 | ||||
-rw-r--r-- | tools/xenstore/xenstored_domain.c | 9 | ||||
-rw-r--r-- | tools/xenstore/xenstored_domain.h | 3 |
3 files changed, 17 insertions, 0 deletions
diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c index 3b1955a5c0..5d308cad86 100644 --- a/tools/xenstore/xenstored_core.c +++ b/tools/xenstore/xenstored_core.c @@ -120,6 +120,7 @@ static char *sockmsg_string(enum xsd_sockmsg_type type) case XS_IS_DOMAIN_INTRODUCED: return "XS_IS_DOMAIN_INTRODUCED"; case XS_RESUME: return "RESUME"; case XS_SET_TARGET: return "SET_TARGET"; + case XS_RESET_WATCHES: return "RESET_WATCHES"; default: return "**UNKNOWN**"; } @@ -1242,6 +1243,10 @@ static void process_message(struct connection *conn, struct buffered_data *in) do_set_target(conn, in); break; + case XS_RESET_WATCHES: + do_reset_watches(conn); + break; + default: eprintf("Client unknown operation %i", in->hdr.msg.type); send_error(conn, ENOSYS); diff --git a/tools/xenstore/xenstored_domain.c b/tools/xenstore/xenstored_domain.c index 654185d4bb..443af8250a 100644 --- a/tools/xenstore/xenstored_domain.c +++ b/tools/xenstore/xenstored_domain.c @@ -537,6 +537,15 @@ void do_is_domain_introduced(struct connection *conn, const char *domid_str) send_reply(conn, XS_IS_DOMAIN_INTRODUCED, result ? "T" : "F", 2); } +/* Allow guest to reset all watches */ +void do_reset_watches(struct connection *conn) +{ + conn_delete_all_watches(conn); + conn_delete_all_transactions(conn); + + send_ack(conn, XS_RESET_WATCHES); +} + static int close_xc_handle(void *_handle) { xc_interface_close(*(xc_interface**)_handle); diff --git a/tools/xenstore/xenstored_domain.h b/tools/xenstore/xenstored_domain.h index 6a1e8be09b..9e2afaea5e 100644 --- a/tools/xenstore/xenstored_domain.h +++ b/tools/xenstore/xenstored_domain.h @@ -40,6 +40,9 @@ void do_set_target(struct connection *conn, struct buffered_data *in); /* domid */ void do_get_domain_path(struct connection *conn, const char *domid_str); +/* Allow guest to reset all watches */ +void do_reset_watches(struct connection *conn); + void domain_init(void); /* Returns the implicit path of a connection (only domains have this) */ |