Call xc_domain_shutdown with the reboot flag when the guest requests a
reboot.
Signed-off-by: John V. Baboval <john.babo...@virtualcomputer.com>
Signed-off-by: Tom Goetz <tom.go...@virtualcomputer.com>
---
xen-all.c | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/xen-all.c b/xen-all.c
index b5e28ab..cd71b24 100644
--- a/xen-all.c
+++ b/xen-all.c
@@ -742,6 +742,7 @@ static void cpu_handle_ioreq(void *opaque)
}
if (qemu_reset_requested_get()) {
qemu_system_reset(VMRESET_REPORT);
+ reboot_hvm_domain();
}
}
@@ -979,3 +980,24 @@ void destroy_hvm_domain(void)
xc_interface_close(xc_handle);
}
}
+
+void reboot_hvm_domain(void)
+{
+ XenXC xc_handle;
+ int sts;
+
+ xc_handle = xen_xc_interface_open(0, 0, 0);
+ if (xc_handle == XC_HANDLER_INITIAL_VALUE) {
+ fprintf(stderr, "Cannot acquire xenctrl handle\n");
+ } else {
+ sts = xc_domain_shutdown(xc_handle, xen_domid, SHUTDOWN_reboot);
+ if (sts != 0) {
+ fprintf(stderr, "? xc_domain_shutdown failed to issue reboot, "
+ "sts %d, %s\n", sts, strerror(errno));
+ } else {
+ fprintf(stderr, "Issued domain %d reboot\n", xen_domid);
+ }
+ xc_interface_close(xc_handle);
+ }
+}
+
--
1.7.4.1