UNWATCH <wpath>|<token>|?
+RESET_WATCHES |
+ Reset all watches and transactions of the caller.
+
---------- Transactions ----------
TRANSACTION_START | <transid>|
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**";
}
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);
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);
/* 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) */
XS_IS_DOMAIN_INTRODUCED,
XS_RESUME,
XS_SET_TARGET,
- XS_RESTRICT
+ XS_RESTRICT,
+ XS_RESET_WATCHES
};
#define XS_WRITE_NONE "NONE"