aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2013-05-01 20:32:27 +0100
committerIan Campbell <ian.campbell@citrix.com>2013-05-08 13:01:22 +0100
commit8968bafa3170d46d21d8f6ee2d0856f270c864ad (patch)
tree5eeaa17493fde3cd64faa45c48280cf24a233f94 /xen/common
parentb5af4d48157d0206bcd515cb2ba4f3d4a3290d69 (diff)
downloadxen-8968bafa3170d46d21d8f6ee2d0856f270c864ad.tar.gz
xen-8968bafa3170d46d21d8f6ee2d0856f270c864ad.tar.bz2
xen-8968bafa3170d46d21d8f6ee2d0856f270c864ad.zip
xen: move VCPUOP_register_runstate_memory_area to common code
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/common')
-rw-r--r--xen/common/domain.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/xen/common/domain.c b/xen/common/domain.c
index d0b2f2eab0..fac3470a33 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1105,6 +1105,34 @@ long do_vcpu_op(int cmd, int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
break;
}
+ case VCPUOP_register_runstate_memory_area:
+ {
+ struct vcpu_register_runstate_memory_area area;
+ struct vcpu_runstate_info runstate;
+
+ rc = -EFAULT;
+ if ( copy_from_guest(&area, arg, 1) )
+ break;
+
+ if ( !guest_handle_okay(area.addr.h, 1) )
+ break;
+
+ rc = 0;
+ runstate_guest(v) = area.addr.h;
+
+ if ( v == current )
+ {
+ __copy_to_guest(runstate_guest(v), &v->runstate, 1);
+ }
+ else
+ {
+ vcpu_runstate_get(v, &runstate);
+ __copy_to_guest(runstate_guest(v), &runstate, 1);
+ }
+
+ break;
+ }
+
#ifdef VCPU_TRAP_NMI
case VCPUOP_send_nmi:
if ( !guest_handle_is_null(arg) )