aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc_domain.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2010-10-18 17:14:07 +0100
committerIan Campbell <ian.campbell@citrix.com>2010-10-18 17:14:07 +0100
commit9bf9eada0dad47460fbecd632b944424a3255664 (patch)
tree4b872ab2f39740cdd256a8b0c2267b94fcacf944 /tools/libxc/xc_domain.c
parent2674a296982598b97ffdd90fa407e4cdd1df3e13 (diff)
downloadxen-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.c31
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,