From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Egger Subject: [PATCH][TOOLS] libxc: mmap fixes for BSD Date: Tue, 10 Jun 2008 16:09:21 +0200 Message-ID: <200806101609.21552.Christoph.Egger@amd.com> Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_RsoTIWIocoXeEaP" 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 --Boundary-00=_RsoTIWIocoXeEaP Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi! On BSD, mmap()ing files works on on-disk files but not on pseudo filesystems like kernfs or procfs. Therefore, attached patch mmap()s anonymous memory. Linux equivalents are sysfs and procfs to above BSD's pseudo-filesystems. On Linux, mmap is implemented for sysfs but it is questionable to me how write operations work since (most) files in sysfs have static content. So this patch may fix some problems with a Linux Dom0, too. Signed-off-by: Christoph Egger =2D-=20 AMD Saxony, Dresden, Germany Operating System Research Center Legal Information: AMD Saxony Limited Liability Company & Co. KG Sitz (Gesch=E4ftsanschrift): Wilschdorfer Landstr. 101, 01109 Dresden, Deutschland Registergericht Dresden: HRA 4896 vertretungsberechtigter Komplement=E4r: AMD Saxony LLC (Sitz Wilmington, Delaware, USA) Gesch=E4ftsf=FChrer der AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy --Boundary-00=_RsoTIWIocoXeEaP Content-Type: text/x-diff; charset="us-ascii"; name="libxc_mmap.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="libxc_mmap.diff" diff -r 57b8c74c35ef tools/libxc/xc_dom_boot.c --- a/tools/libxc/xc_dom_boot.c Tue Jun 10 14:17:20 2008 +0100 +++ b/tools/libxc/xc_dom_boot.c Tue Jun 10 15:47:37 2008 +0200 @@ -166,7 +166,7 @@ void *xc_dom_boot_domU_map(struct xc_dom } ptr = mmap(NULL, count << page_shift, PROT_READ | PROT_WRITE, - MAP_SHARED, dom->guest_xc, 0); + MAP_ANON | MAP_SHARED, -1, 0); if ( ptr == MAP_FAILED ) { err = errno; diff -r 57b8c74c35ef tools/libxc/xc_domain_save.c --- a/tools/libxc/xc_domain_save.c Tue Jun 10 14:17:20 2008 +0100 +++ b/tools/libxc/xc_domain_save.c Tue Jun 10 15:47:37 2008 +0200 @@ -589,7 +589,7 @@ static xen_pfn_t *xc_map_m2p(int xc_hand } if ( (m2p = mmap(NULL, m2p_size, prot, - MAP_SHARED, xc_handle, 0)) == MAP_FAILED ) + MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED ) { ERROR("failed to mmap m2p"); return NULL; diff -r 57b8c74c35ef tools/libxc/xc_hvm_build.c --- a/tools/libxc/xc_hvm_build.c Tue Jun 10 14:17:20 2008 +0100 +++ b/tools/libxc/xc_hvm_build.c Tue Jun 10 15:47:37 2008 +0200 @@ -123,7 +123,7 @@ static int loadelfimage( if ( entries == NULL ) goto err; elf->dest = mmap(NULL, pages << PAGE_SHIFT, PROT_READ | PROT_WRITE, - MAP_SHARED, xch, 0); + MAP_ANON | MAP_SHARED, -1, 0); if ( elf->dest == MAP_FAILED ) goto err; --Boundary-00=_RsoTIWIocoXeEaP 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 --Boundary-00=_RsoTIWIocoXeEaP--