List Info

Thread: Re: how to do what Neat Image did




Re: how to do what Neat Image did
user name
2007-01-11 19:15:51
# HG changeset patch
# User Brendan Cully <brendancs.ubc.ca>
# 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 <brendancs.ubc.ca>

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-devellists.xensource.com
http://lists.xen
source.com/xen-devel

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )