[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH qom-cpu 05/59] cpus: Simplify pause_all_vcpus()
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH qom-cpu 05/59] cpus: Simplify pause_all_vcpus() |
Date: |
Sun, 9 Jun 2013 21:12:32 +0200 |
Use new qemu_for_each_cpu() to pause, stop and kick CPUs.
Signed-off-by: Andreas Färber <address@hidden>
---
cpus.c | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/cpus.c b/cpus.c
index 85b35f6..ad5edfe 100644
--- a/cpus.c
+++ b/cpus.c
@@ -962,39 +962,39 @@ static int all_vcpus_paused(void)
return 1;
}
-void pause_all_vcpus(void)
+static void pause_one_vcpu(CPUState *cpu, void *data)
{
- CPUArchState *penv = first_cpu;
+ cpu->stop = true;
+ qemu_cpu_kick(cpu);
+}
+static void stop_one_vcpu(CPUState *cpu, void *data)
+{
+ cpu->stop = false;
+ cpu->stopped = true;
+}
+
+static void kick_one_vcpu(CPUState *cpu, void *data)
+{
+ qemu_cpu_kick(cpu);
+}
+
+void pause_all_vcpus(void)
+{
qemu_clock_enable(vm_clock, false);
- while (penv) {
- CPUState *pcpu = ENV_GET_CPU(penv);
- pcpu->stop = true;
- qemu_cpu_kick(pcpu);
- penv = penv->next_cpu;
- }
+ qemu_for_each_cpu(pause_one_vcpu, NULL);
if (qemu_in_vcpu_thread()) {
cpu_stop_current();
if (!kvm_enabled()) {
- penv = first_cpu;
- while (penv) {
- CPUState *pcpu = ENV_GET_CPU(penv);
- pcpu->stop = false;
- pcpu->stopped = true;
- penv = penv->next_cpu;
- }
+ qemu_for_each_cpu(stop_one_vcpu, NULL);
return;
}
}
while (!all_vcpus_paused()) {
qemu_cond_wait(&qemu_pause_cond, &qemu_global_mutex);
- penv = first_cpu;
- while (penv) {
- qemu_cpu_kick(ENV_GET_CPU(penv));
- penv = penv->next_cpu;
- }
+ qemu_for_each_cpu(kick_one_vcpu, NULL);
}
}
--
1.8.1.4
- [Qemu-devel] [PATCH qom-cpu 00/59] QOM CPUState, part 10: CPU loops, Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 03/59] cpus: Simplify cpu_synchronize_all_post_reset(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 01/59] kvm: Change kvm_cpu_synchronize_state() argument to CPUState, Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 04/59] cpus: Simplify cpu_synchronize_all_post_init(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 02/59] kvm: Change cpu_synchronize_state() argument to CPUState, Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 05/59] cpus: Simplify pause_all_vcpus(),
Andreas Färber <=
- [Qemu-devel] [PATCH qom-cpu 06/59] cpus: Simplify resume_all_vcpus(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 07/59] cpus: Simplify set_numa_modes(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 08/59] cpus: Simplify qmp_inject_nmi(), Andreas Färber, 2013/06/09
- [Qemu-devel] [PATCH qom-cpu 09/59] cpus: Simplify hw_error(), Andreas Färber, 2013/06/09