[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 6/6] xenstored: add --master-domid to support domain builder
When a domain builder stub domain is used, the initial xenstore connection to domain 0 may use a different domain ID as the endpoint; allow this domain ID to be specified on the command line. Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/xenstore/xenstored_core.c | 5 +++++ tools/xenstore/xenstored_core.h | 3 +++ tools/xenstore/xenstored_domain.c | 2 +- tools/xenstore/xenstored_minios.c | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c index 2324e53..47f0722 100644 --- a/tools/xenstore/xenstored_core.c +++ b/tools/xenstore/xenstored_core.c @@ -1795,6 +1795,7 @@ static struct option options[] = { { "entry-nb", 1, NULL, 'E' }, { "pid-file", 1, NULL, 'F' }, { "event", 1, NULL, 'e' }, + { "master-domid", 1, NULL, 'm' }, { "help", 0, NULL, 'H' }, { "no-fork", 0, NULL, 'N' }, { "priv-domid", 1, NULL, 'p' }, @@ -1810,6 +1811,7 @@ static struct option options[] = { { NULL, 0, NULL, 0 } }; extern void dump_conn(struct connection *conn); +int dom0_domid = 0; int dom0_event = 0; int priv_domid = 0; @@ -1871,6 +1873,9 @@ int main(int argc, char *argv[]) case 'e': dom0_event = strtol(optarg, NULL, 10); break; + case 'm': + dom0_domid = strtol(optarg, NULL, 10); + break; case 'p': priv_domid = strtol(optarg, NULL, 10); break; diff --git a/tools/xenstore/xenstored_core.h b/tools/xenstore/xenstored_core.h index cfbcf6f..dcf95b5 100644 --- a/tools/xenstore/xenstored_core.h +++ b/tools/xenstore/xenstored_core.h @@ -170,6 +170,7 @@ void trace(const char *fmt, ...); void dtrace_io(const struct connection *conn, const struct buffered_data *data, int out); extern int event_fd; +extern int dom0_domid; extern int dom0_event; extern int priv_domid; @@ -177,6 +178,8 @@ extern int priv_domid; void *xenbus_map(void); void unmap_xenbus(void *interface); +static inline int xenbus_master_domid(void) { return dom0_domid; } + /* Return the event channel used by xenbus. */ evtchn_port_t xenbus_evtchn(void); diff --git a/tools/xenstore/xenstored_domain.c b/tools/xenstore/xenstored_domain.c index f24bd6b..f7bbb03 100644 --- a/tools/xenstore/xenstored_domain.c +++ b/tools/xenstore/xenstored_domain.c @@ -606,7 +606,7 @@ static int dom0_init(void) if (port == -1) return -1; - dom0 = new_domain(NULL, 0, port); + dom0 = new_domain(NULL, xenbus_master_domid(), port); if (dom0 == NULL) return -1; diff --git a/tools/xenstore/xenstored_minios.c b/tools/xenstore/xenstored_minios.c index 1c6f794..f9c921e 100644 --- a/tools/xenstore/xenstored_minios.c +++ b/tools/xenstore/xenstored_minios.c @@ -51,7 +51,7 @@ evtchn_port_t xenbus_evtchn(void) void *xenbus_map(void) { - return xc_gnttab_map_grant_ref(*xcg_handle, 0, + return xc_gnttab_map_grant_ref(*xcg_handle, xenbus_master_domid(), GNTTAB_RESERVED_XENSTORE, PROT_READ|PROT_WRITE); } -- 1.8.5.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |