diff mbox series

[RFC,v4,14/71] cpu: define cpu_halted helpers

Message ID 20181025144644.15464-14-cota@braap.org (mailing list archive)
State New, archived
Headers show
Series [RFC,v4,01/71] cpu: convert queued work to a QSIMPLEQ | expand

Commit Message

Emilio Cota Oct. 25, 2018, 2:45 p.m. UTC
cpu->halted will soon be protected by cpu->lock.
We will use these helpers to ease the transition,
since right now cpu->halted has many direct callers.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Emilio G. Cota <cota@braap.org>
---
 include/qom/cpu.h | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

Comments

Alex Bennée Oct. 31, 2018, 12:04 p.m. UTC | #1
Emilio G. Cota <cota@braap.org> writes:

> cpu->halted will soon be protected by cpu->lock.
> We will use these helpers to ease the transition,
> since right now cpu->halted has many direct callers.
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Emilio G. Cota <cota@braap.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

> ---
>  include/qom/cpu.h | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
>
> diff --git a/include/qom/cpu.h b/include/qom/cpu.h
> index 11cbf21f00..aeed63a705 100644
> --- a/include/qom/cpu.h
> +++ b/include/qom/cpu.h
> @@ -487,6 +487,30 @@ bool cpu_mutex_locked(const CPUState *cpu);
>   */
>  bool no_cpu_mutex_locked(void);
>
> +static inline uint32_t cpu_halted(CPUState *cpu)
> +{
> +    uint32_t ret;
> +
> +    if (cpu_mutex_locked(cpu)) {
> +        return cpu->halted;
> +    }
> +    cpu_mutex_lock(cpu);
> +    ret = cpu->halted;
> +    cpu_mutex_unlock(cpu);
> +    return ret;
> +}
> +
> +static inline void cpu_halted_set(CPUState *cpu, uint32_t val)
> +{
> +    if (cpu_mutex_locked(cpu)) {
> +        cpu->halted = val;
> +        return;
> +    }
> +    cpu_mutex_lock(cpu);
> +    cpu->halted = val;
> +    cpu_mutex_unlock(cpu);
> +}
> +
>  static inline void cpu_tb_jmp_cache_clear(CPUState *cpu)
>  {
>      unsigned int i;


--
Alex Bennée
diff mbox series

Patch

diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 11cbf21f00..aeed63a705 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -487,6 +487,30 @@  bool cpu_mutex_locked(const CPUState *cpu);
  */
 bool no_cpu_mutex_locked(void);
 
+static inline uint32_t cpu_halted(CPUState *cpu)
+{
+    uint32_t ret;
+
+    if (cpu_mutex_locked(cpu)) {
+        return cpu->halted;
+    }
+    cpu_mutex_lock(cpu);
+    ret = cpu->halted;
+    cpu_mutex_unlock(cpu);
+    return ret;
+}
+
+static inline void cpu_halted_set(CPUState *cpu, uint32_t val)
+{
+    if (cpu_mutex_locked(cpu)) {
+        cpu->halted = val;
+        return;
+    }
+    cpu_mutex_lock(cpu);
+    cpu->halted = val;
+    cpu_mutex_unlock(cpu);
+}
+
 static inline void cpu_tb_jmp_cache_clear(CPUState *cpu)
 {
     unsigned int i;