From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Zeffertt Subject: [PATCH 6/24] [xen-unstable.hg] don't hard code xenstore/console domid when seeding grant table of new domU Date: Mon, 23 Mar 2009 15:20:47 +0000 Message-ID: <49C7A8CF.9040208@eu.citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050607090002020208080702" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------050607090002020208080702 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit --------------050607090002020208080702 Content-Type: text/plain; name="xc_var_run_domid" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="xc_var_run_domid" This patch implements a way to determine in which domains the console and xenstore daemons reside. 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. Here, libxc is modified to use this mechanism for the grant table entries. A previous version of this patch was sent to xen-devel. See http://lists.xensource.com/archives/html/xen-devel/2008-07/msg00610.html Signed-off-by: Diego Ongaro Signed-off-by: Alex Zeffertt --- diff -r 5ea8720ce31f tools/libxc/xc_dom_boot.c --- a/tools/libxc/xc_dom_boot.c Fri Aug 01 16:50:30 2008 +0100 +++ b/tools/libxc/xc_dom_boot.c Fri Aug 01 16:50:31 2008 +0100 @@ -256,6 +256,31 @@ return rc; } +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, "%" PRIu32, &domid) != 1 ) + goto out; + +out: + if ( f != NULL ) + fclose(f); + + return domid; +} + static unsigned long xc_dom_gnttab_setup(int xc_handle, uint32_t domid) { DECLARE_HYPERCALL; @@ -296,9 +321,8 @@ unsigned long gnttab_gmfn; grant_entry_t *gnttab; - /* TODO: don't hard-code these */ - console_domid = 0; - xenstore_domid = 0; + console_domid = read_domid("console"); + xenstore_domid = read_domid("xenstore"); gnttab_gmfn = xc_dom_gnttab_setup(xc_handle, domid); if ( gnttab_gmfn == -1 ) --------------050607090002020208080702 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------050607090002020208080702--