# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1200663305 0
# Node ID 2ac0fd9fd4b462934e01c02b2f1510856e6461cd
# Parent a1a3fe600ef3c6855809db62d6b3048226922dac
qemu-dm: Nicely terminate the device model script, to let it properly
clean resources.
Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
---
tools/ioemu/target-i386-dm/helper2.c | 10 ++++++++--
tools/python/xen/xend/image.py | 2 +-
2 files changed, 9 insertions(+), 3 deletions(-)
diff -r a1a3fe600ef3 -r 2ac0fd9fd4b4 tools/ioemu/target-i386-dm/helper2.c
--- a/tools/ioemu/target-i386-dm/helper2.c Fri Jan 18 13:33:37 2008 +0000
+++ b/tools/ioemu/target-i386-dm/helper2.c Fri Jan 18 13:35:05 2008 +0000
@@ -637,6 +637,7 @@ int main_loop(void)
int evtchn_fd = xce_handle == -1 ? -1 : xc_evtchn_fd(xce_handle);
char qemu_file[PATH_MAX];
fd_set fds;
+ int ret = 0;
buffered_io_timer = qemu_new_timer(rt_clock, handle_buffered_io,
cpu_single_env);
@@ -647,9 +648,14 @@ int main_loop(void)
xenstore_record_dm_state("running");
while (1) {
- while (!(vm_running && suspend_requested))
+ while (!((vm_running && suspend_requested) || shutdown_requested))
/* Wait up to 10 msec. */
main_loop_wait(10);
+
+ if (shutdown_requested) {
+ ret = EXCP_INTERRUPT;
+ break;
+ }
fprintf(logfile, "device model saving state\n");
@@ -676,7 +682,7 @@ int main_loop(void)
xenstore_record_dm_state("running");
}
- return 0;
+ return ret;
}
void destroy_hvm_domain(void)
diff -r a1a3fe600ef3 -r 2ac0fd9fd4b4 tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py Fri Jan 18 13:33:37 2008 +0000
+++ b/tools/python/xen/xend/image.py Fri Jan 18 13:35:05 2008 +0000
@@ -321,7 +321,7 @@ class ImageHandler:
return
if self.pid:
try:
- os.kill(self.pid, signal.SIGKILL)
+ os.kill(self.pid, signal.SIGTERM)
except OSError, exn:
log.exception(exn)
try:
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|