WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] Re: Who uses xc_gnttab_map_grant_refs?

To: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] Re: Who uses xc_gnttab_map_grant_refs?
From: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
Date: Mon, 21 Jul 2008 11:48:11 +0100
Cc: Derek Murray <Derek.Murray@xxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 21 Jul 2008 03:48:37 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <18560.44798.347872.311788@xxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Mail-followup-to: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>, Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>, Derek Murray <Derek.Murray@xxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
References: <20080716144039.GA14133@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <617dbaa80807160751w5d6b0097p821d0f0281b04608@xxxxxxxxxxxxxx> <20080716150842.GB14133@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <18560.42753.839101.911894@xxxxxxxxxxxxxxxxxxxxxxxx> <20080718144701.GW4456@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <18560.44798.347872.311788@xxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.12-2006-07-14
Ian Jackson, le Fri 18 Jul 2008 15:55:58 +0100, a écrit :
> Samuel Thibault writes ("Re: [Xen-devel] Who uses xc_gnttab_map_grant_refs?"):
> > But still kill the old function at least?
> 
> Is that a change we want to make at this stage of the release ?  I
> don't necessarily have an opinion but it's a question we should be
> asking.

Ok, well, here is a patch that keeps the old function, just making its
implementation an internal with an additional domids_stride parameter in
order to also both efficiency.

Samuel



libxc: add xc_gnttab_map_domain_grant_refs.

xc_gnttab_map_domain_grant_refs permits to simply map several pages from
the same domain.

Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>

diff -r 3139383b36a0 tools/libxc/xc_linux.c
--- a/tools/libxc/xc_linux.c    Fri Jul 18 18:13:53 2008 +0100
+++ b/tools/libxc/xc_linux.c    Mon Jul 21 11:44:43 2008 +0100
@@ -418,9 +418,10 @@
     return addr;
 }
 
-void *xc_gnttab_map_grant_refs(int xcg_handle,
+static void *do_gnttab_map_grant_refs(int xcg_handle,
                                uint32_t count,
                                uint32_t *domids,
+                               int domids_stride,
                                uint32_t *refs,
                                int prot)
 {
@@ -435,7 +436,7 @@
 
     for ( i = 0; i < count; i++ )
     {
-        map->refs[i].domid = domids[i];
+        map->refs[i].domid = domids[i * domids_stride];
         map->refs[i].ref   = refs[i];
     }
 
@@ -462,6 +463,24 @@
  out:
     free(map);
     return addr;
+}
+
+void *xc_gnttab_map_grant_refs(int xcg_handle,
+                               uint32_t count,
+                               uint32_t *domids,
+                               uint32_t *refs,
+                               int prot)
+{
+    return do_gnttab_map_grant_refs(xcg_handle, count, domids, 1, refs, prot);
+}
+
+void *xc_gnttab_map_domain_grant_refs(int xcg_handle,
+                               uint32_t count,
+                               uint32_t domid,
+                               uint32_t *refs,
+                               int prot)
+{
+    return do_gnttab_map_grant_refs(xcg_handle, count, &domid, 0, refs, prot);
 }
 
 int xc_gnttab_munmap(int xcg_handle,
diff -r 3139383b36a0 tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h     Fri Jul 18 18:13:53 2008 +0100
+++ b/tools/libxc/xenctrl.h     Mon Jul 21 11:44:43 2008 +0100
@@ -865,6 +865,23 @@
                                uint32_t *refs,
                                int prot);
 
+/**
+ * Memory maps one or more grant references from one domain to a
+ * contiguous local address range. Mappings should be unmapped with
+ * xc_gnttab_munmap.  Returns NULL on failure.
+ *
+ * @parm xcg_handle a handle on an open grant table interface
+ * @parm count the number of grant references to be mapped
+ * @parm domid the domain to map memory from
+ * @parm refs an array of @count grant references to be mapped
+ * @parm prot same flag as in mmap()
+ */
+void *xc_gnttab_map_domain_grant_refs(int xcg_handle,
+                                      uint32_t count,
+                                      uint32_t domid,
+                                      uint32_t *refs,
+                                      int prot);
+
 /*
  * Unmaps the @count pages starting at @start_address, which were mapped by a
  * call to xc_gnttab_map_grant_ref or xc_gnttab_map_grant_refs. Returns zero

Attachment: patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>