[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 4 of 8] Add XS_RESUME command
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |