mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-06-16 02:15:47 +00:00
kvm tools: Make keyboard termination go through regular termination path
Instead of exiting directly when a user enters 'ctrl x + a', go through the regular termination path by stopping all VCPUs and letting the main thread handle it. Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
+5
-4
@@ -722,10 +722,11 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix)
|
||||
exit_code = 1;
|
||||
|
||||
for (i = 1; i < nrcpus; i++) {
|
||||
pthread_kill(kvm_cpus[i]->thread, SIGKVMEXIT);
|
||||
if (pthread_join(kvm_cpus[i]->thread, &ret) != 0)
|
||||
die("pthread_join");
|
||||
|
||||
if (kvm_cpus[i]->is_running) {
|
||||
pthread_kill(kvm_cpus[i]->thread, SIGKVMEXIT);
|
||||
if (pthread_join(kvm_cpus[i]->thread, &ret) != 0)
|
||||
die("pthread_join");
|
||||
}
|
||||
if (ret != NULL)
|
||||
exit_code = 1;
|
||||
}
|
||||
|
||||
@@ -421,7 +421,11 @@ static void kvm_cpu__handle_coalesced_mmio(struct kvm_cpu *cpu)
|
||||
|
||||
void kvm_cpu__reboot(void)
|
||||
{
|
||||
pthread_kill(kvm_cpus[0]->thread, SIGKVMEXIT);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < KVM_NR_CPUS; i++)
|
||||
if (kvm_cpus[i])
|
||||
pthread_kill(kvm_cpus[i]->thread, SIGKVMEXIT);
|
||||
}
|
||||
|
||||
int kvm_cpu__start(struct kvm_cpu *cpu)
|
||||
@@ -442,7 +446,7 @@ int kvm_cpu__start(struct kvm_cpu *cpu)
|
||||
if (cpu->kvm->single_step)
|
||||
kvm_cpu__enable_singlestep(cpu);
|
||||
|
||||
for (;;) {
|
||||
while (cpu->is_running) {
|
||||
if (cpu->paused) {
|
||||
kvm__notify_paused();
|
||||
cpu->paused = 0;
|
||||
|
||||
Reference in New Issue
Block a user