# HG changeset patch
# User Brendan Cully <brendan@xxxxxxxxx>
# Date 1168565202 28800
# Node ID c6154e7b94abb94793b43ddc8e1f550fdb8f1a58
# Parent 2cdbd7c62a0efe182082317a7f4bd3fde73e925b
Add XS_RESUME command.
This clears the shutdown flag for a domain in xenstore, allowing
subsequent shutdowns of the same domain to fire the appropriate
watches.
Signed-off-by: Brendan Cully <brendan@xxxxxxxxx>
diff -r 2cdbd7c62a0e -r c6154e7b94ab tools/xenstore/xenstored_core.c
--- a/tools/xenstore/xenstored_core.c Thu Jan 11 17:26:42 2007 -0800
+++ b/tools/xenstore/xenstored_core.c Thu Jan 11 17:26:42 2007 -0800
@@ -164,6 +164,7 @@ static char *sockmsg_string(enum xsd_soc
case XS_WATCH_EVENT: return "WATCH_EVENT";
case XS_ERROR: return "ERROR";
case XS_IS_DOMAIN_INTRODUCED: return "XS_IS_DOMAIN_INTRODUCED";
+ case XS_RESUME: return "RESUME";
default:
return "**UNKNOWN**";
}
@@ -1265,6 +1266,10 @@ static void process_message(struct conne
case XS_GET_DOMAIN_PATH:
do_get_domain_path(conn, onearg(in));
+ break;
+
+ case XS_RESUME:
+ do_resume(conn, onearg(in));
break;
default:
diff -r 2cdbd7c62a0e -r c6154e7b94ab tools/xenstore/xenstored_domain.c
--- a/tools/xenstore/xenstored_domain.c Thu Jan 11 17:26:42 2007 -0800
+++ b/tools/xenstore/xenstored_domain.c Thu Jan 11 17:26:42 2007 -0800
@@ -395,6 +395,43 @@ void do_release(struct connection *conn,
send_ack(conn, XS_RELEASE);
}
+void do_resume(struct connection *conn, const char *domid_str)
+{
+ struct domain *domain;
+ unsigned int domid;
+
+ if (!domid_str) {
+ send_error(conn, EINVAL);
+ return;
+ }
+
+ domid = atoi(domid_str);
+ if (!domid) {
+ send_error(conn, EINVAL);
+ return;
+ }
+
+ if (conn->id != 0) {
+ send_error(conn, EACCES);
+ return;
+ }
+
+ domain = find_domain_by_domid(domid);
+ if (!domain) {
+ send_error(conn, ENOENT);
+ return;
+ }
+
+ if (!domain->conn) {
+ send_error(conn, EINVAL);
+ return;
+ }
+
+ domain->shutdown = 0;
+
+ send_ack(conn, XS_RESUME);
+}
+
void do_get_domain_path(struct connection *conn, const char *domid_str)
{
char *path;
diff -r 2cdbd7c62a0e -r c6154e7b94ab tools/xenstore/xenstored_domain.h
--- a/tools/xenstore/xenstored_domain.h Thu Jan 11 17:26:42 2007 -0800
+++ b/tools/xenstore/xenstored_domain.h Thu Jan 11 17:26:42 2007 -0800
@@ -32,6 +32,9 @@ void do_release(struct connection *conn,
void do_release(struct connection *conn, const char *domid_str);
/* domid */
+void do_resume(struct connection *conn, const char *domid_str);
+
+/* domid */
void do_get_domain_path(struct connection *conn, const char *domid_str);
/* Returns the event channel handle */
diff -r 2cdbd7c62a0e -r c6154e7b94ab tools/xenstore/xs.c
--- a/tools/xenstore/xs.c Thu Jan 11 17:26:42 2007 -0800
+++ b/tools/xenstore/xs.c Thu Jan 11 17:26:42 2007 -0800
@@ -719,6 +719,12 @@ bool xs_release_domain(struct xs_handle
return xs_bool(single_with_domid(h, XS_RELEASE, domid));
}
+/* clear the shutdown bit for the given domain */
+bool xs_resume_domain(struct xs_handle *h, unsigned int domid)
+{
+ return xs_bool(single_with_domid(h, XS_RESUME, domid));
+}
+
char *xs_get_domain_path(struct xs_handle *h, unsigned int domid)
{
char domid_str[MAX_STRLEN(domid)];
diff -r 2cdbd7c62a0e -r c6154e7b94ab tools/xenstore/xs.h
--- a/tools/xenstore/xs.h Thu Jan 11 17:26:42 2007 -0800
+++ b/tools/xenstore/xs.h Thu Jan 11 17:26:42 2007 -0800
@@ -133,6 +133,11 @@ bool xs_introduce_domain(struct xs_handl
unsigned int domid,
unsigned long mfn,
unsigned int eventchn);
+/* Resume a domain.
+ * Clear the shutdown flag for this domain in the store.
+ */
+bool xs_resume_domain(struct xs_handle *h, unsigned int domid);
+
/* Release a domain.
* Tells the store domain to release the memory page to the domain.
*/
diff -r 2cdbd7c62a0e -r c6154e7b94ab xen/include/public/io/xs_wire.h
--- a/xen/include/public/io/xs_wire.h Thu Jan 11 17:26:42 2007 -0800
+++ b/xen/include/public/io/xs_wire.h Thu Jan 11 17:26:42 2007 -0800
@@ -45,7 +45,8 @@ enum xsd_sockmsg_type
XS_SET_PERMS,
XS_WATCH_EVENT,
XS_ERROR,
- XS_IS_DOMAIN_INTRODUCED
+ XS_IS_DOMAIN_INTRODUCED,
+ XS_RESUME
};
#define XS_WRITE_NONE "NONE"
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|