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

[Xen-changelog] [xen-unstable] General code clean-up of xc_linux.c.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1261031275 0
# Node ID ba42d74c9adc0bb73f06236d15e241e55777fe96
# Parent  549c77a3f4c5bfa6ca06b654ac77e245fe33b9e3
General code clean-up of xc_linux.c.

Signed-off-by: Patrick Colp <Patrick.Colp@xxxxxxxxxx>
---
 tools/libxc/xc_linux.c |  171 ++++++++++++++++++++++---------------------------
 1 files changed, 77 insertions(+), 94 deletions(-)

diff -r 549c77a3f4c5 -r ba42d74c9adc tools/libxc/xc_linux.c
--- a/tools/libxc/xc_linux.c    Thu Dec 17 06:27:55 2009 +0000
+++ b/tools/libxc/xc_linux.c    Thu Dec 17 06:27:55 2009 +0000
@@ -40,7 +40,9 @@ int xc_interface_open(void)
         PERROR("Could not get file handle flags");
         goto error;
     }
+
     flags |= FD_CLOEXEC;
+
     if ( fcntl(fd, F_SETFD, flags) < 0 )
     {
         PERROR("Could not set file handle flags");
@@ -53,6 +55,7 @@ int xc_interface_open(void)
     saved_errno = errno;
     close(fd);
     errno = saved_errno;
+
     return -1;
 }
 
@@ -66,30 +69,32 @@ void *xc_map_foreign_batch(int xc_handle
 {
     privcmd_mmapbatch_t ioctlx;
     void *addr;
-    addr = mmap(NULL, num*PAGE_SIZE, prot, MAP_SHARED, xc_handle, 0);
-    if ( addr == MAP_FAILED ) {
+
+    addr = mmap(NULL, num << PAGE_SHIFT, prot, MAP_SHARED, xc_handle, 0);
+    if ( addr == MAP_FAILED )
+    {
         perror("xc_map_foreign_batch: mmap failed");
         return NULL;
     }
 
-    ioctlx.num=num;
-    ioctlx.dom=dom;
-    ioctlx.addr=(unsigned long)addr;
-    ioctlx.arr=arr;
+    ioctlx.num = num;
+    ioctlx.dom = dom;
+    ioctlx.addr = (unsigned long)addr;
+    ioctlx.arr = arr;
+
     if ( ioctl(xc_handle, IOCTL_PRIVCMD_MMAPBATCH, &ioctlx) < 0 )
     {
         int saved_errno = errno;
         perror("xc_map_foreign_batch: ioctl failed");
-        (void)munmap(addr, num*PAGE_SIZE);
+        (void)munmap(addr, num << PAGE_SHIFT);
         errno = saved_errno;
         return NULL;
     }
+
     return addr;
-
-}
-
-void *xc_map_foreign_range(int xc_handle, uint32_t dom,
-                           int size, int prot,
+}
+
+void *xc_map_foreign_range(int xc_handle, uint32_t dom, int size, int prot,
                            unsigned long mfn)
 {
     xen_pfn_t *arr;
@@ -108,9 +113,9 @@ void *xc_map_foreign_range(int xc_handle
     return ret;
 }
 
-void *xc_map_foreign_ranges(int xc_handle, uint32_t dom,
-                            size_t size, int prot, size_t chunksize,
-                            privcmd_mmap_entry_t entries[], int nentries)
+void *xc_map_foreign_ranges(int xc_handle, uint32_t dom, size_t size, int prot,
+                            size_t chunksize, privcmd_mmap_entry_t entries[],
+                            int nentries)
 {
     xen_pfn_t *arr;
     int num_per_entry;
@@ -139,8 +144,7 @@ static int do_privcmd(int xc_handle, uns
 
 int do_xen_hypercall(int xc_handle, privcmd_hypercall_t *hypercall)
 {
-    return do_privcmd(xc_handle,
-                      IOCTL_PRIVCMD_HYPERCALL,
+    return do_privcmd(xc_handle, IOCTL_PRIVCMD_HYPERCALL,
                       (unsigned long)hypercall);
 }
 
@@ -157,16 +161,10 @@ static int find_sysfsdir(char *sysfsdir)
     if ( (fp = fopen(MTAB, "r")) == NULL )
         return -1;
 
-    while ( fscanf(fp, "%*s %"
-                   STR(MAX_PATH)
-                   "s %"
-                   STR(MAX_PATH)
-                   "s %*s %*d %*d\n",
+    while ( fscanf(fp, "%*s %"STR(MAX_PATH)"s %"STR(MAX_PATH)"s %*s %*d %*d\n",
                    sysfsdir, type) == 2 )
-    {
         if ( strncmp(type, "sysfs", 5) == 0 )
             break;
-    }
 
     fclose(fp);
 
@@ -231,7 +229,7 @@ int xc_evtchn_open(void)
     if ( (fd = open(EVTCHN_DEV_NAME, O_RDWR)) == -1 )
     {
         if ( (errno == ENOENT) &&
-            ((mkdir("/dev/xen", 0755) == 0) || (errno == EEXIST)) &&
+             ((mkdir("/dev/xen", 0755) == 0) || (errno == EEXIST)) &&
              (mknod(EVTCHN_DEV_NAME, S_IFCHR|0600, devnum) == 0) )
             goto reopen;
 
@@ -360,14 +358,14 @@ int xc_gnttab_open(void)
     struct stat st;
     int fd;
     int devnum;
-    
+
     devnum = xc_find_device_number("gntdev");
-    
+
     /* Make sure any existing device file links to correct device. */
     if ( (lstat(GNTTAB_DEV_NAME, &st) != 0) || !S_ISCHR(st.st_mode) ||
          (st.st_rdev != devnum) )
         (void)unlink(GNTTAB_DEV_NAME);
-    
+
 reopen:
     if ( (fd = open(GNTTAB_DEV_NAME, O_RDWR)) == -1 )
     {
@@ -375,11 +373,11 @@ reopen:
              ((mkdir("/dev/xen", 0755) == 0) || (errno == EEXIST)) &&
              (mknod(GNTTAB_DEV_NAME, S_IFCHR|0600, devnum) == 0) )
             goto reopen;
-        
+
         PERROR("Could not open grant table interface");
         return -1;
     }
-    
+
     return fd;
 }
 
@@ -388,26 +386,25 @@ int xc_gnttab_close(int xcg_handle)
     return close(xcg_handle);
 }
 
-void *xc_gnttab_map_grant_ref(int xcg_handle,
-                              uint32_t domid,
-                              uint32_t ref,
+void *xc_gnttab_map_grant_ref(int xcg_handle, uint32_t domid, uint32_t ref,
                               int prot)
 {
     struct ioctl_gntdev_map_grant_ref map;
     void *addr;
-    
+
     map.count = 1;
     map.refs[0].domid = domid;
-    map.refs[0].ref   = ref;
+    map.refs[0].ref = ref;
 
     if ( ioctl(xcg_handle, IOCTL_GNTDEV_MAP_GRANT_REF, &map) )
         return NULL;
-    
+
     addr = mmap(NULL, PAGE_SIZE, prot, MAP_SHARED, xcg_handle, map.index);
     if ( addr == MAP_FAILED )
     {
         int saved_errno = errno;
         struct ioctl_gntdev_unmap_grant_ref unmap_grant;
+
         /* Unmap the driver slots used to store the grant information. */
         perror("xc_gnttab_map_grant_ref: mmap failed");
         unmap_grant.index = map.index;
@@ -416,34 +413,31 @@ void *xc_gnttab_map_grant_ref(int xcg_ha
         errno = saved_errno;
         return NULL;
     }
-    
+
     return addr;
 }
 
-static void *do_gnttab_map_grant_refs(int xcg_handle,
-                               uint32_t count,
-                               uint32_t *domids,
-                               int domids_stride,
-                               uint32_t *refs,
-                               int prot)
+static void *do_gnttab_map_grant_refs(int xcg_handle, uint32_t count,
+                                      uint32_t *domids, int domids_stride,
+                                      uint32_t *refs, int prot)
 {
     struct ioctl_gntdev_map_grant_ref *map;
     void *addr = NULL;
     int i;
-    
+
     map = malloc(sizeof(*map) +
-                 (count-1) * sizeof(struct ioctl_gntdev_map_grant_ref));
+                 (count - 1) * sizeof(struct ioctl_gntdev_map_grant_ref));
     if ( map == NULL )
         return NULL;
 
     for ( i = 0; i < count; i++ )
     {
         map->refs[i].domid = domids[i * domids_stride];
-        map->refs[i].ref   = refs[i];
+        map->refs[i].ref = refs[i];
     }
 
     map->count = count;
-    
+
     if ( ioctl(xcg_handle, IOCTL_GNTDEV_MAP_GRANT_REF, map) )
         goto out;
 
@@ -453,6 +447,7 @@ static void *do_gnttab_map_grant_refs(in
     {
         int saved_errno = errno;
         struct ioctl_gntdev_unmap_grant_ref unmap_grant;
+
         /* Unmap the driver slots used to store the grant information. */
         perror("xc_gnttab_map_grant_refs: mmap failed");
         unmap_grant.index = map->index;
@@ -464,30 +459,23 @@ static void *do_gnttab_map_grant_refs(in
 
  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)
+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)
+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,
-                     void *start_address,
-                     uint32_t count)
+int xc_gnttab_munmap(int xcg_handle, void *start_address, uint32_t count)
 {
     struct ioctl_gntdev_get_offset_for_vaddr get_offset;
     struct ioctl_gntdev_unmap_grant_ref unmap_grant;
@@ -503,7 +491,7 @@ int xc_gnttab_munmap(int xcg_handle,
      * mmap() the pages.
      */
     get_offset.vaddr = (unsigned long)start_address;
-    if ( (rc = ioctl(xcg_handle, IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR, 
+    if ( (rc = ioctl(xcg_handle, IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR,
                      &get_offset)) )
         return rc;
 
@@ -516,7 +504,7 @@ int xc_gnttab_munmap(int xcg_handle,
     /* Next, unmap the memory. */
     if ( (rc = munmap(start_address, count * getpagesize())) )
         return rc;
-    
+
     /* Finally, unmap the driver slots used to store the grant information. */
     unmap_grant.index = get_offset.offset;
     unmap_grant.count = count;
@@ -526,8 +514,7 @@ int xc_gnttab_munmap(int xcg_handle,
     return 0;
 }
 
-int xc_gnttab_set_max_grants(int xcg_handle,
-                             uint32_t count)
+int xc_gnttab_set_max_grants(int xcg_handle, uint32_t count)
 {
     struct ioctl_gntdev_set_max_grants set_max;
     int rc;
@@ -539,13 +526,12 @@ int xc_gnttab_set_max_grants(int xcg_han
     return 0;
 }
 
-int xc_gnttab_op(int xc_handle, int cmd,
-                 void * op, int op_size, int count)
+int xc_gnttab_op(int xc_handle, int cmd, void * op, int op_size, int count)
 {
     int ret = 0;
     DECLARE_HYPERCALL;
 
-    hypercall.op     = __HYPERVISOR_grant_table_op;
+    hypercall.op = __HYPERVISOR_grant_table_op;
     hypercall.arg[0] = cmd;
     hypercall.arg[1] = (unsigned long)op;
     hypercall.arg[2] = count;
@@ -570,9 +556,9 @@ int xc_gnttab_get_version(int xc_handle,
     int rc;
 
     query.dom = domid;
-    rc = xc_gnttab_op(xc_handle, GNTTABOP_get_version,
-                      &query, sizeof(query), 1);
-    if (rc < 0)
+    rc = xc_gnttab_op(xc_handle, GNTTABOP_get_version, &query, sizeof(query),
+                      1);
+    if ( rc < 0 )
         return rc;
     else
         return query.version;
@@ -587,35 +573,32 @@ static void *_gnttab_map_table(int xc_ha
     xen_pfn_t *pfn_list = NULL;
     grant_entry_v1_t *gnt = NULL;
 
-    if (!gnt_num)
+    if ( !gnt_num )
         return NULL;
 
     query.dom = domid;
-    rc = xc_gnttab_op(xc_handle, GNTTABOP_query_size,
-                     &query, sizeof(query), 1);
-
-    if (rc || (query.status != GNTST_okay) )
+    rc = xc_gnttab_op(xc_handle, GNTTABOP_query_size, &query, sizeof(query), 
1);
+
+    if ( rc || (query.status != GNTST_okay) )
     {
         ERROR("Could not query dom's grant size\n", domid);
         return NULL;
     }
 
-    *gnt_num = query.nr_frames *
-            (PAGE_SIZE / sizeof(grant_entry_v1_t) );
+    *gnt_num = query.nr_frames * (PAGE_SIZE / sizeof(grant_entry_v1_t) );
 
     frame_list = malloc(query.nr_frames * sizeof(unsigned long));
-    if (!frame_list || lock_pages(frame_list, query.nr_frames *
-                                              sizeof(unsigned long)))
+    if ( !frame_list || lock_pages(frame_list,
+                                   query.nr_frames * sizeof(unsigned long)) )
     {
         ERROR("Alloc/lock frame_list in xc_gnttab_map_table\n");
-        if (frame_list)
+        if ( frame_list )
             free(frame_list);
         return NULL;
     }
 
     pfn_list = malloc(query.nr_frames * sizeof(xen_pfn_t));
-
-    if (!pfn_list)
+    if ( !pfn_list )
     {
         ERROR("Could not lock pfn_list in xc_gnttab_map_table\n");
         goto err;
@@ -626,33 +609,33 @@ static void *_gnttab_map_table(int xc_ha
     set_xen_guest_handle(setup.frame_list, frame_list);
 
     /* XXX Any race with other setup_table hypercall? */
-    rc = xc_gnttab_op(xc_handle, GNTTABOP_setup_table,
-                      &setup, sizeof(setup), 1);
-
-    if (rc ||( setup.status != GNTST_okay) )
+    rc = xc_gnttab_op(xc_handle, GNTTABOP_setup_table, &setup, sizeof(setup),
+                      1);
+
+    if ( rc || (setup.status != GNTST_okay) )
     {
         ERROR("Could not get grant table frame list\n");
         goto err;
     }
 
-    for (i = 0; i < setup.nr_frames; i++)
+    for ( i = 0; i < setup.nr_frames; i++ )
         pfn_list[i] = frame_list[i];
 
-    gnt = xc_map_foreign_pages(xc_handle, domid, PROT_READ,
-                               pfn_list, setup.nr_frames);
-    if (!gnt)
+    gnt = xc_map_foreign_pages(xc_handle, domid, PROT_READ, pfn_list,
+                               setup.nr_frames);
+    if ( !gnt )
     {
         ERROR("Could not map grant table\n");
         goto err;
     }
 
 err:
-    if (frame_list)
-    {
-        unlock_pages(frame_list, query.nr_frames *  sizeof(unsigned long));
+    if ( frame_list )
+    {
+        unlock_pages(frame_list, query.nr_frames * sizeof(unsigned long));
         free(frame_list);
     }
-    if (pfn_list)
+    if ( pfn_list )
         free(pfn_list);
 
     return gnt;

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


 


Rackspace

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