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-changelog

[Xen-changelog] [xen-unstable] libxc: osdep: convert xc_gnttab_map_{gran

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] libxc: osdep: convert xc_gnttab_map_{grant_ref, grant_refs, domain_grant_refs}()
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 24 Dec 2010 15:46:01 -0800
Delivery-date: Fri, 24 Dec 2010 15:48:38 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1291369007 0
# Node ID cdfdc88320f04f630f7fd2e03ee00547ef773855
# Parent  eb2c27908b3d0ecc4963fd49921cab40a02b5c98
libxc: osdep: convert xc_gnttab_map_{grant_ref,grant_refs,domain_grant_refs}()

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Signed-off-by: Ian Jackson <ian.jackson.citrix.com>
---
 tools/libxc/xc_gnttab.c    |   38 ++++++++++++++++++++++++++++++++++
 tools/libxc/xc_linux.c     |   50 +++++++++++++++++++++++++++------------------
 tools/libxc/xc_minios.c    |   49 ++++++++++++++++++++++++++------------------
 tools/libxc/xenctrlosdep.h |   16 ++++++++++++++
 4 files changed, 114 insertions(+), 39 deletions(-)

diff -r eb2c27908b3d -r cdfdc88320f0 tools/libxc/xc_gnttab.c
--- a/tools/libxc/xc_gnttab.c   Fri Dec 03 09:36:47 2010 +0000
+++ b/tools/libxc/xc_gnttab.c   Fri Dec 03 09:36:47 2010 +0000
@@ -145,3 +145,41 @@ grant_entry_v2_t *xc_gnttab_map_table_v2
     return _gnttab_map_table(xch, domid, gnt_num);
 }
 
+void *xc_gnttab_map_grant_ref(xc_gnttab *xcg,
+                              uint32_t domid,
+                              uint32_t ref,
+                              int prot)
+{
+       return xcg->ops->u.gnttab.map_grant_ref(xcg, xcg->ops_handle,
+                                               domid, ref, prot);
+}
+
+void *xc_gnttab_map_grant_refs(xc_gnttab *xcg,
+                               uint32_t count,
+                               uint32_t *domids,
+                               uint32_t *refs,
+                               int prot)
+{
+       return xcg->ops->u.gnttab.map_grant_refs(xcg, xcg->ops_handle,
+                                                count, domids, refs, prot);
+}
+
+void *xc_gnttab_map_domain_grant_refs(xc_gnttab *xcg,
+                                      uint32_t count,
+                                      uint32_t domid,
+                                      uint32_t *refs,
+                                      int prot)
+{
+       return xcg->ops->u.gnttab.map_domain_grant_refs(xcg, xcg->ops_handle,
+                                                       count, domid, refs, 
prot);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r eb2c27908b3d -r cdfdc88320f0 tools/libxc/xc_linux.c
--- a/tools/libxc/xc_linux.c    Fri Dec 03 09:36:47 2010 +0000
+++ b/tools/libxc/xc_linux.c    Fri Dec 03 09:36:47 2010 +0000
@@ -508,8 +508,10 @@ static int linux_gnttab_close(xc_gnttab 
     return close(fd);
 }
 
-void *xc_gnttab_map_grant_ref(xc_gnttab *xch, uint32_t domid, uint32_t ref, 
int prot)
-{
+static void *linux_gnttab_map_grant_ref(xc_gnttab *xch, xc_osdep_handle h,
+                                        uint32_t domid, uint32_t ref, int prot)
+{
+    int fd = (int)h;
     struct ioctl_gntdev_map_grant_ref map;
     void *addr;
 
@@ -517,13 +519,13 @@ void *xc_gnttab_map_grant_ref(xc_gnttab 
     map.refs[0].domid = domid;
     map.refs[0].ref = ref;
 
-    if ( ioctl(xch->fd, IOCTL_GNTDEV_MAP_GRANT_REF, &map) ) {
+    if ( ioctl(fd, IOCTL_GNTDEV_MAP_GRANT_REF, &map) ) {
         PERROR("xc_gnttab_map_grant_ref: ioctl MAP_GRANT_REF failed");
         return NULL;
     }
 
 mmap_again:    
-    addr = mmap(NULL, PAGE_SIZE, prot, MAP_SHARED, xch->fd, map.index);
+    addr = mmap(NULL, PAGE_SIZE, prot, MAP_SHARED, fd, map.index);
     if ( addr == MAP_FAILED )
     {
         int saved_errno = errno;
@@ -538,7 +540,7 @@ mmap_again:
         PERROR("xc_gnttab_map_grant_ref: mmap failed");
         unmap_grant.index = map.index;
         unmap_grant.count = 1;
-        ioctl(xch->fd, IOCTL_GNTDEV_UNMAP_GRANT_REF, &unmap_grant);
+        ioctl(fd, IOCTL_GNTDEV_UNMAP_GRANT_REF, &unmap_grant);
         errno = saved_errno;
         return NULL;
     }
@@ -546,10 +548,12 @@ mmap_again:
     return addr;
 }
 
-static void *do_gnttab_map_grant_refs(xc_gnttab *xch, uint32_t count,
+static void *do_gnttab_map_grant_refs(xc_gnttab *xch, xc_osdep_handle h,
+                                      uint32_t count,
                                       uint32_t *domids, int domids_stride,
                                       uint32_t *refs, int prot)
 {
+    int fd = (int)h;
     struct ioctl_gntdev_map_grant_ref *map;
     void *addr = NULL;
     int i;
@@ -567,12 +571,12 @@ static void *do_gnttab_map_grant_refs(xc
 
     map->count = count;
 
-    if ( ioctl(xch->fd, IOCTL_GNTDEV_MAP_GRANT_REF, map) ) {
+    if ( ioctl(fd, IOCTL_GNTDEV_MAP_GRANT_REF, map) ) {
         PERROR("xc_gnttab_map_grant_refs: ioctl MAP_GRANT_REF failed");
         goto out;
     }
 
-    addr = mmap(NULL, PAGE_SIZE * count, prot, MAP_SHARED, xch->fd,
+    addr = mmap(NULL, PAGE_SIZE * count, prot, MAP_SHARED, fd,
                 map->index);
     if ( addr == MAP_FAILED )
     {
@@ -583,7 +587,7 @@ static void *do_gnttab_map_grant_refs(xc
         PERROR("xc_gnttab_map_grant_refs: mmap failed");
         unmap_grant.index = map->index;
         unmap_grant.count = count;
-        ioctl(xch->fd, IOCTL_GNTDEV_UNMAP_GRANT_REF, &unmap_grant);
+        ioctl(fd, IOCTL_GNTDEV_UNMAP_GRANT_REF, &unmap_grant);
         errno = saved_errno;
         addr = NULL;
     }
@@ -594,16 +598,18 @@ static void *do_gnttab_map_grant_refs(xc
     return addr;
 }
 
-void *xc_gnttab_map_grant_refs(xc_gnttab *xcg, uint32_t count, uint32_t 
*domids,
-                               uint32_t *refs, int prot)
-{
-    return do_gnttab_map_grant_refs(xcg, count, domids, 1, refs, prot);
-}
-
-void *xc_gnttab_map_domain_grant_refs(xc_gnttab *xcg, uint32_t count,
-                                      uint32_t domid, uint32_t *refs, int prot)
-{
-    return do_gnttab_map_grant_refs(xcg, count, &domid, 0, refs, prot);
+static void *linux_gnttab_map_grant_refs(xc_gnttab *xcg, xc_osdep_handle h,
+                                         uint32_t count, uint32_t *domids,
+                                         uint32_t *refs, int prot)
+{
+    return do_gnttab_map_grant_refs(xcg, h, count, domids, 1, refs, prot);
+}
+
+static void *linux_gnttab_map_domain_grant_refs(xc_gnttab *xcg, 
xc_osdep_handle h,
+                                                uint32_t count,
+                                                uint32_t domid, uint32_t 
*refs, int prot)
+{
+    return do_gnttab_map_grant_refs(xcg, h, count, &domid, 0, refs, prot);
 }
 
 int xc_gnttab_munmap(xc_gnttab *xcg, void *start_address, uint32_t count)
@@ -660,6 +666,12 @@ static struct xc_osdep_ops linux_gnttab_
 static struct xc_osdep_ops linux_gnttab_ops = {
     .open = &linux_gnttab_open,
     .close = &linux_gnttab_close,
+
+    .u.gnttab = {
+        .map_grant_ref = &linux_gnttab_map_grant_ref,
+        .map_grant_refs = &linux_gnttab_map_grant_refs,
+        .map_domain_grant_refs = &linux_gnttab_map_domain_grant_refs,
+    },
 };
 
 static struct xc_osdep_ops *linux_osdep_init(xc_interface *xch, enum 
xc_osdep_type type)
diff -r eb2c27908b3d -r cdfdc88320f0 tools/libxc/xc_minios.c
--- a/tools/libxc/xc_minios.c   Fri Dec 03 09:36:47 2010 +0000
+++ b/tools/libxc/xc_minios.c   Fri Dec 03 09:36:47 2010 +0000
@@ -447,38 +447,41 @@ void minios_gnttab_close_fd(int fd)
     files[fd].type = FTYPE_NONE;
 }
 
-void *xc_gnttab_map_grant_ref(xc_gnttab *xcg,
-                              uint32_t domid,
-                              uint32_t ref,
-                              int prot)
-{
-    return gntmap_map_grant_refs(&files[xcg->fd].gntmap,
+static void *minios_gnttab_map_grant_ref(xc_gnttab *xcg, xc_osdep_handle h,
+                                         uint32_t domid,
+                                         uint32_t ref,
+                                         int prot)
+{
+    int fd = (int)h;
+    return gntmap_map_grant_refs(&files[fd].gntmap,
                                  1,
                                  &domid, 0,
                                  &ref,
                                  prot & PROT_WRITE);
 }
 
-void *xc_gnttab_map_grant_refs(xc_gnttab *xcg,
-                               uint32_t count,
-                               uint32_t *domids,
-                               uint32_t *refs,
-                               int prot)
-{
-    return gntmap_map_grant_refs(&files[xcg->fd].gntmap,
+static void *minios_gnttab_map_grant_refs(xc_gnttab *xcg, xc_osdep_handle h,
+                                          uint32_t count,
+                                          uint32_t *domids,
+                                          uint32_t *refs,
+                                          int prot)
+{
+    int fd = (int)h;
+    return gntmap_map_grant_refs(&files[fd].gntmap,
                                  count,
                                  domids, 1,
                                  refs,
                                  prot & PROT_WRITE);
 }
 
-void *xc_gnttab_map_domain_grant_refs(xc_gnttab *xcg,
-                                      uint32_t count,
-                                      uint32_t domid,
-                                      uint32_t *refs,
-                                      int prot)
-{
-    return gntmap_map_grant_refs(&files[xcg->fd].gntmap,
+static void *minios_gnttab_map_domain_grant_refs(xc_gnttab *xcg, 
xc_osdep_handle h,
+                                                 uint32_t count,
+                                                 uint32_t domid,
+                                                 uint32_t *refs,
+                                                 int prot)
+{
+    int fd = (int)h;
+    return gntmap_map_grant_refs(&files[fd].gntmap,
                                  count,
                                  &domid, 0,
                                  refs,
@@ -516,6 +519,12 @@ static struct xc_osdep_ops minios_gnttab
 static struct xc_osdep_ops minios_gnttab_ops = {
     .open = &minios_gnttab_open,
     .close = &minios_gnttab_close,
+
+    .u.gnttab = {
+        .map_grant_ref = &minios_gnttab_map_grant_ref,
+        .map_grant_refs = &minios_gnttab_map_grant_refs,
+        .map_domain_grant_refs = &minios_gnttab_map_domain_grant_refs,
+    },
 };
 
 static struct xc_osdep_ops *minios_osdep_init(xc_interface *xch, enum 
xc_osdep_type type)
diff -r eb2c27908b3d -r cdfdc88320f0 tools/libxc/xenctrlosdep.h
--- a/tools/libxc/xenctrlosdep.h        Fri Dec 03 09:36:47 2010 +0000
+++ b/tools/libxc/xenctrlosdep.h        Fri Dec 03 09:36:47 2010 +0000
@@ -89,6 +89,22 @@ struct xc_osdep_ops
             evtchn_port_or_error_t (*pending)(xc_evtchn *xce, xc_osdep_handle 
h);
             int (*unmask)(xc_evtchn *xce, xc_osdep_handle h, evtchn_port_t 
port);
         } evtchn;
+        struct {
+            void *(*map_grant_ref)(xc_gnttab *xcg, xc_osdep_handle h,
+                                   uint32_t domid,
+                                   uint32_t ref,
+                                   int prot);
+            void *(*map_grant_refs)(xc_gnttab *xcg, xc_osdep_handle h,
+                                    uint32_t count,
+                                    uint32_t *domids,
+                                    uint32_t *refs,
+                                    int prot);
+            void *(*map_domain_grant_refs)(xc_gnttab *xcg, xc_osdep_handle h,
+                                           uint32_t count,
+                                           uint32_t domid,
+                                           uint32_t *refs,
+                                           int prot);
+        } gnttab;
     } u;
 };
 typedef struct xc_osdep_ops xc_osdep_ops;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] libxc: osdep: convert xc_gnttab_map_{grant_ref, grant_refs, domain_grant_refs}(), Xen patchbot-unstable <=