[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 4/5] Grant table for console, xenstore pages
If each of the files /var/run/{console,xenstore}.did contains an integer, this integer is interpreted as the domain id for that daemon. The default or fallback is domid=0, of course. In this patch, libxc is modified to use this mechanism for the grant table entries. Signed-off-by: Diego Ongaro <diego.ongaro@xxxxxxxxxx> --- diff -r 581c5525e1ac tools/libxc/xc_dom_boot.c --- a/tools/libxc/xc_dom_boot.c Thu Jul 10 19:50:48 2008 +0100 +++ b/tools/libxc/xc_dom_boot.c Fri Jul 11 15:50:02 2008 +0100 @@ -297,14 +297,40 @@ return mfn; } -/* TODO: don't hard-code these */ -#define CONSOLE_DOMID 0 -#define XENSTORE_DOMID 0 +static uint32_t read_domid(const char *service) +{ + char buf[64]; + int n; + FILE *f = NULL; + uint32_t domid = 0; + + n = snprintf(buf, sizeof(buf), "/var/run/%s.did", service); + if ( n < 0 || n >= sizeof(buf) ) + goto out; + + f = fopen(buf, "r"); + if ( f == NULL ) + goto out; + + if ( fscanf(f, "%d", &domid) != 1 ) + goto out; + +out: + if ( f != NULL ) + fclose(f); + + return domid; +} int xc_dom_gnttab_init(struct xc_dom_image *dom) { + uint32_t console_domid; + uint32_t xenstore_domid; unsigned long grant_table_mfn; grant_entry_t *grant_table; + + console_domid = read_domid("console"); + xenstore_domid = read_domid("xenstore"); grant_table_mfn = xc_dom_gnttab_mfn(dom); if ( grant_table_mfn == -1 ) @@ -324,17 +350,17 @@ return -1; } - if ( dom->guest_domid != CONSOLE_DOMID ) + if ( dom->guest_domid != console_domid ) { grant_table[GNTTAB_RESERVED_CONSOLE].flags = GTF_permit_access; - grant_table[GNTTAB_RESERVED_CONSOLE].domid = CONSOLE_DOMID; + grant_table[GNTTAB_RESERVED_CONSOLE].domid = console_domid; grant_table[GNTTAB_RESERVED_CONSOLE].frame = xc_dom_p2m_host(dom, dom->console_pfn); } - if ( dom->guest_domid != XENSTORE_DOMID ) + if ( dom->guest_domid != xenstore_domid ) { grant_table[GNTTAB_RESERVED_XENSTORE].flags = GTF_permit_access; - grant_table[GNTTAB_RESERVED_XENSTORE].domid = XENSTORE_DOMID; + grant_table[GNTTAB_RESERVED_XENSTORE].domid = xenstore_domid; grant_table[GNTTAB_RESERVED_XENSTORE].frame = xc_dom_p2m_host(dom, dom->xenstore_pfn); } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |