diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2010-10-18 17:14:07 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2010-10-18 17:14:07 +0100 |
commit | 9bf9eada0dad47460fbecd632b944424a3255664 (patch) | |
tree | 4b872ab2f39740cdd256a8b0c2267b94fcacf944 /tools/libxc/xc_domain.c | |
parent | 2674a296982598b97ffdd90fa407e4cdd1df3e13 (diff) | |
download | xen-9bf9eada0dad47460fbecd632b944424a3255664.tar.gz xen-9bf9eada0dad47460fbecd632b944424a3255664.tar.bz2 xen-9bf9eada0dad47460fbecd632b944424a3255664.zip |
libxc: add xc_domain_memory_exchange_pages to wrap XENMEM_exchange
Generalised from exchange_page in xc_offline_page.c
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxc/xc_domain.c')
-rw-r--r-- | tools/libxc/xc_domain.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c index 18a346d960..3ec2981a6c 100644 --- a/tools/libxc/xc_domain.c +++ b/tools/libxc/xc_domain.c @@ -728,6 +728,37 @@ int xc_domain_populate_physmap_exact(xc_interface *xch, return err; } +int xc_domain_memory_exchange_pages(xc_interface *xch, + int domid, + unsigned long nr_in_extents, + unsigned int in_order, + xen_pfn_t *in_extents, + unsigned long nr_out_extents, + unsigned int out_order, + xen_pfn_t *out_extents) +{ + int rc; + + struct xen_memory_exchange exchange = { + .in = { + .nr_extents = nr_in_extents, + .extent_order = in_order, + .domid = domid + }, + .out = { + .nr_extents = nr_out_extents, + .extent_order = out_order, + .domid = domid + } + }; + set_xen_guest_handle(exchange.in.extent_start, in_extents); + set_xen_guest_handle(exchange.out.extent_start, out_extents); + + rc = xc_memory_op(xch, XENMEM_exchange, &exchange); + + return rc; +} + static int xc_domain_pod_target(xc_interface *xch, int op, uint32_t domid, |