diff --git a/tools/ioemu/monitor.c b/tools/ioemu/monitor.c index 677f9b6d85..43304ea253 100644 --- a/tools/ioemu/monitor.c +++ b/tools/ioemu/monitor.c @@ -225,14 +225,10 @@ static void do_info_history (void) } } +extern void destroy_vmx_domain(void); static void do_quit(void) { - extern int domid; - extern FILE* logfile; - char destroy_cmd[20]; - sprintf(destroy_cmd, "xm destroy %d", domid); - if (system(destroy_cmd) == -1) - fprintf(logfile, "%s failed.!\n", destroy_cmd); + destroy_vmx_domain(); exit(0); } diff --git a/tools/ioemu/target-i386-dm/helper2.c b/tools/ioemu/target-i386-dm/helper2.c index 361a2bbe9e..5cbeb88aeb 100644 --- a/tools/ioemu/target-i386-dm/helper2.c +++ b/tools/ioemu/target-i386-dm/helper2.c @@ -328,7 +328,16 @@ do_interrupt(CPUState *env, int vector) env->send_event = 1; } -//static unsigned long tsc_per_tick = 1; /* XXX: calibrate */ +void +destroy_vmx_domain(void) +{ + extern int domid; + extern FILE* logfile; + char destroy_cmd[20]; + sprintf(destroy_cmd, "xm destroy %d", domid); + if (system(destroy_cmd) == -1) + fprintf(logfile, "%s failed.!\n", destroy_cmd); +} int main_loop(void) { @@ -396,6 +405,7 @@ int main_loop(void) } } } + destroy_vmx_domain(); return 0; }