[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxc: add xc_gnttab_map_domain_grant_refs.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1216645373 -3600 # Node ID c049e70af85fbe2006ae5447420fefe8e52ab397 # Parent 85a83b919653378db803882286fa156079c7cd69 libxc: add xc_gnttab_map_domain_grant_refs. xc_gnttab_map_domain_grant_refs permits to simply map several pages from the same domain. Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx> --- tools/libxc/xc_linux.c | 23 +++++++++++++++++++++-- tools/libxc/xenctrl.h | 17 +++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff -r 85a83b919653 -r c049e70af85f tools/libxc/xc_linux.c --- a/tools/libxc/xc_linux.c Mon Jul 21 10:39:15 2008 +0100 +++ b/tools/libxc/xc_linux.c Mon Jul 21 14:02:53 2008 +0100 @@ -418,9 +418,10 @@ void *xc_gnttab_map_grant_ref(int xcg_ha return addr; } -void *xc_gnttab_map_grant_refs(int xcg_handle, +static void *do_gnttab_map_grant_refs(int xcg_handle, uint32_t count, uint32_t *domids, + int domids_stride, uint32_t *refs, int prot) { @@ -435,7 +436,7 @@ void *xc_gnttab_map_grant_refs(int xcg_h for ( i = 0; i < count; i++ ) { - map->refs[i].domid = domids[i]; + map->refs[i].domid = domids[i * domids_stride]; map->refs[i].ref = refs[i]; } @@ -464,6 +465,24 @@ void *xc_gnttab_map_grant_refs(int xcg_h return addr; } +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) +{ + 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) diff -r 85a83b919653 -r c049e70af85f tools/libxc/xenctrl.h --- a/tools/libxc/xenctrl.h Mon Jul 21 10:39:15 2008 +0100 +++ b/tools/libxc/xenctrl.h Mon Jul 21 14:02:53 2008 +0100 @@ -865,6 +865,23 @@ void *xc_gnttab_map_grant_refs(int xcg_h uint32_t *refs, int prot); +/** + * Memory maps one or more grant references from one domain to a + * contiguous local address range. Mappings should be unmapped with + * xc_gnttab_munmap. Returns NULL on failure. + * + * @parm xcg_handle a handle on an open grant table interface + * @parm count the number of grant references to be mapped + * @parm domid the domain to map memory from + * @parm refs an array of @count grant references to be mapped + * @parm prot same flag as in mmap() + */ +void *xc_gnttab_map_domain_grant_refs(int xcg_handle, + uint32_t count, + uint32_t domid, + uint32_t *refs, + int prot); + /* * Unmaps the @count pages starting at @start_address, which were mapped by a * call to xc_gnttab_map_grant_ref or xc_gnttab_map_grant_refs. Returns zero _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |