We are going to want to reuse this code for NetBSD rump kernels, where
there is no gntmap device and we just want to call the MiniOS gntmap
code directly.

As part of this we want to abstract away the use of files[] inside the
actual functions.  Do this with a #define whose definition we are
going to make conditional in just a moment.

No functional change in this patch.

Signed-off-by: Ian Jackson <ian.jack...@eu.citrix.com>
Signed-off-by: Wei Liu <wei.l...@citrix.com>
Acked-by: Samuel Thibault <samuel.thiba...@ens-lyon.org>
Acked-by: Ian Campbell <ian.campb...@citrix.com>
---
Changes in v2:
1. Fix a bug spotted by Jürgen.
---
 tools/libxc/xc_minios_common.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/tools/libxc/xc_minios_common.c b/tools/libxc/xc_minios_common.c
index 8b08cde..c38b5f2 100644
--- a/tools/libxc/xc_minios_common.c
+++ b/tools/libxc/xc_minios_common.c
@@ -208,12 +208,14 @@ struct xc_osdep_ops xc_privcmd_ops = {
     },
 };
 
+#define GNTMAP(h) (files[(int)(h)].gntmap)
+
 static xc_osdep_handle minios_gnttab_open(xc_gnttab *xcg)
 {
     int fd = alloc_fd(FTYPE_GNTMAP);
     if ( fd == -1 )
         return XC_OSDEP_OPEN_ERROR;
-    gntmap_init(&files[fd].gntmap);
+    gntmap_init(&GNTMAP(fd));
     return (xc_osdep_handle)fd;
 }
 
@@ -225,7 +227,7 @@ static int minios_gnttab_close(xc_gnttab *xcg, 
xc_osdep_handle h)
 
 void minios_gnttab_close_fd(int fd)
 {
-    gntmap_fini(&files[fd].gntmap);
+    gntmap_fini(&GNTMAP(fd));
     files[fd].type = FTYPE_NONE;
 }
 
@@ -235,7 +237,6 @@ static void *minios_gnttab_grant_map(xc_gnttab *xcg, 
xc_osdep_handle h,
                                      uint32_t notify_offset,
                                      evtchn_port_t notify_port)
 {
-    int fd = (int)h;
     int stride = 1;
     if (flags & XC_GRANT_MAP_SINGLE_DOMAIN)
         stride = 0;
@@ -243,7 +244,7 @@ static void *minios_gnttab_grant_map(xc_gnttab *xcg, 
xc_osdep_handle h,
         errno = ENOSYS;
         return NULL;
     }
-    return gntmap_map_grant_refs(&files[fd].gntmap,
+    return gntmap_map_grant_refs(&GNTMAP(fd),
                                  count, domids, stride,
                                  refs, prot & PROT_WRITE);
 }
@@ -252,9 +253,8 @@ static int minios_gnttab_munmap(xc_gnttab *xcg, 
xc_osdep_handle h,
                                 void *start_address,
                                 uint32_t count)
 {
-    int fd = (int)h;
     int ret;
-    ret = gntmap_munmap(&files[fd].gntmap,
+    ret = gntmap_munmap(&GNTMAP(fd),
                         (unsigned long) start_address,
                         count);
     if (ret < 0) {
@@ -267,9 +267,8 @@ static int minios_gnttab_munmap(xc_gnttab *xcg, 
xc_osdep_handle h,
 static int minios_gnttab_set_max_grants(xc_gnttab *xcg, xc_osdep_handle h,
                              uint32_t count)
 {
-    int fd = (int)h;
     int ret;
-    ret = gntmap_set_max_grants(&files[fd].gntmap,
+    ret = gntmap_set_max_grants(&GNTMAP(fd),
                                 count);
     if (ret < 0) {
         errno = -ret;
-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to