[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH qom-cpu 05/59] cpus: Simplify pause_all_vcpus()
From: |
li guang |
Subject: |
Re: [Qemu-devel] [PATCH qom-cpu 05/59] cpus: Simplify pause_all_vcpus() |
Date: |
Mon, 10 Jun 2013 10:14:05 +0800 |
Reviewed-by: liguang <address@hidden>
在 2013-06-09日的 21:12 +0200,Andreas Färber写道:
> 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);
> }
> }
>
- [Qemu-devel] [PATCH qom-cpu 03/59] cpus: Simplify cpu_synchronize_all_post_reset(), (continued)
- [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, 2013/06/09
- Re: [Qemu-devel] [PATCH qom-cpu 05/59] cpus: Simplify pause_all_vcpus(),
li guang <=
- [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
- [Qemu-devel] [PATCH qom-cpu 10/59] cpus: Simplify qemu_tcg_wait_io_event() and qemu_tcg_cpu_thread_fn(), Andreas Färber, 2013/06/09