[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 4/5] libxc: minios: Introduce abstraction for files[]



On 02/26/2015 12:56 PM, Wei Liu wrote:
From: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>

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.Jackson@xxxxxxxxxxxxx>
---
  tools/libxc/xc_minios_privcmd.c | 15 +++++++--------
  1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/tools/libxc/xc_minios_privcmd.c b/tools/libxc/xc_minios_privcmd.c
index 7766b86..27d9076 100644
--- a/tools/libxc/xc_minios_privcmd.c
+++ b/tools/libxc/xc_minios_privcmd.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(h));

GNTMAP(fd)?

Same multiple times below.


Juergen

      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(h));
      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(h),
                                   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(h),
                          (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(h),
                                  count);
      if (ret < 0) {
          errno = -ret;



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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.