# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1291369007 0
# Node ID 0d76a4dbba7fb59e0d974aae58f1c4ad95bdada9
# Parent cdfdc88320f04f630f7fd2e03ee00547ef773855
libxc: osdep: convert xc_gnttab_munmap()
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Signed-off-by: Ian Jackson <ian.jackson.citrix.com>
---
tools/libxc/xc_gnttab.c | 9 +++++++++
tools/libxc/xc_linux.c | 11 +++++++----
tools/libxc/xc_minios.c | 12 +++++++-----
tools/libxc/xenctrlosdep.h | 3 +++
4 files changed, 26 insertions(+), 9 deletions(-)
diff -r cdfdc88320f0 -r 0d76a4dbba7f 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
@@ -174,6 +174,15 @@ void *xc_gnttab_map_domain_grant_refs(xc
count, domid, refs,
prot);
}
+int xc_gnttab_munmap(xc_gnttab *xcg,
+ void *start_address,
+ uint32_t count)
+{
+ return xcg->ops->u.gnttab.munmap(xcg, xcg->ops_handle,
+ start_address, count);
+}
+
+
/*
* Local variables:
* mode: C
diff -r cdfdc88320f0 -r 0d76a4dbba7f 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
@@ -612,8 +612,10 @@ static void *linux_gnttab_map_domain_gra
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)
-{
+static int linux_gnttab_munmap(xc_gnttab *xcg, xc_osdep_handle h,
+ void *start_address, uint32_t count)
+{
+ int fd = (int)h;
struct ioctl_gntdev_get_offset_for_vaddr get_offset;
struct ioctl_gntdev_unmap_grant_ref unmap_grant;
int rc;
@@ -628,7 +630,7 @@ int xc_gnttab_munmap(xc_gnttab *xcg, voi
* mmap() the pages.
*/
get_offset.vaddr = (unsigned long)start_address;
- if ( (rc = ioctl(xcg->fd, IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR,
+ if ( (rc = ioctl(fd, IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR,
&get_offset)) )
return rc;
@@ -645,7 +647,7 @@ int xc_gnttab_munmap(xc_gnttab *xcg, voi
/* Finally, unmap the driver slots used to store the grant information. */
unmap_grant.index = get_offset.offset;
unmap_grant.count = count;
- if ( (rc = ioctl(xcg->fd, IOCTL_GNTDEV_UNMAP_GRANT_REF, &unmap_grant)) )
+ if ( (rc = ioctl(fd, IOCTL_GNTDEV_UNMAP_GRANT_REF, &unmap_grant)) )
return rc;
return 0;
@@ -671,6 +673,7 @@ static struct xc_osdep_ops linux_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,
+ .munmap = &linux_gnttab_munmap,
},
};
diff -r cdfdc88320f0 -r 0d76a4dbba7f 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
@@ -488,12 +488,13 @@ static void *minios_gnttab_map_domain_gr
prot & PROT_WRITE);
}
-int xc_gnttab_munmap(xc_gnttab *xcg,
- void *start_address,
- uint32_t count)
-{
+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[xcg->fd].gntmap,
+ ret = gntmap_munmap(&files[fd].gntmap,
(unsigned long) start_address,
count);
if (ret < 0) {
@@ -524,6 +525,7 @@ static struct xc_osdep_ops minios_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,
+ .munmap = &minios_gnttab_munmap,
},
};
diff -r cdfdc88320f0 -r 0d76a4dbba7f 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
@@ -104,6 +104,9 @@ struct xc_osdep_ops
uint32_t domid,
uint32_t *refs,
int prot);
+ int (*munmap)(xc_gnttab *xcg, xc_osdep_handle h,
+ void *start_address,
+ uint32_t count);
} gnttab;
} u;
};
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|