[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 06/53] hw/core: introduce 'format_state' callback to repla
From: |
Greg Kurz |
Subject: |
Re: [PATCH v2 06/53] hw/core: introduce 'format_state' callback to replace 'dump_state' |
Date: |
Tue, 14 Sep 2021 21:28:27 +0200 |
On Tue, 14 Sep 2021 15:19:55 +0100
Daniel P. Berrangé <berrange@redhat.com> wrote:
> The 'dump_state' callback assumes it will be outputting to a FILE
> object. This is fine for HMP, but not so useful for QMP. Introduce
> a new 'format_state' callback that returns a formatted GString
> instead.
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> hw/core/cpu-common.c | 15 +++++++++++++++
> include/hw/core/cpu.h | 13 ++++++++++++-
> 2 files changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
> index e2f5a64604..c2cd33a817 100644
> --- a/hw/core/cpu-common.c
> +++ b/hw/core/cpu-common.c
> @@ -106,6 +106,21 @@ void cpu_dump_state(CPUState *cpu, FILE *f, int flags)
> if (cc->dump_state) {
> cpu_synchronize_state(cpu);
> cc->dump_state(cpu, f, flags);
> + } else if (cc->format_state) {
> + g_autoptr(GString) buf = g_string_new("");
> + cpu_synchronize_state(cpu);
> + cc->format_state(cpu, buf, flags);
> + qemu_fprintf(f, "%s", buf->str);
> + }
> +}
> +
> +void cpu_format_state(CPUState *cpu, GString *buf, int flags)
> +{
> + CPUClass *cc = CPU_GET_CLASS(cpu);
> +
> + if (cc->format_state) {
> + cpu_synchronize_state(cpu);
> + cc->format_state(cpu, buf, flags);
> }
> }
>
> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> index bc864564ce..1599ef9df3 100644
> --- a/include/hw/core/cpu.h
> +++ b/include/hw/core/cpu.h
> @@ -91,7 +91,8 @@ struct SysemuCPUOps;
> * @reset_dump_flags: #CPUDumpFlags to use for reset logging.
> * @has_work: Callback for checking if there is work to do.
> * @memory_rw_debug: Callback for GDB memory access.
> - * @dump_state: Callback for dumping state.
> + * @dump_state: Callback for dumping state. Deprecated, use @format_state.
> + * @format_state: Callback for formatting state.
> * @get_arch_id: Callback for getting architecture-dependent CPU ID.
> * @set_pc: Callback for setting the Program Counter register. This
> * should have the semantics used by the target architecture when
> @@ -136,6 +137,7 @@ struct CPUClass {
> int (*memory_rw_debug)(CPUState *cpu, vaddr addr,
> uint8_t *buf, int len, bool is_write);
> void (*dump_state)(CPUState *cpu, FILE *, int flags);
> + void (*format_state)(CPUState *cpu, GString *buf, int flags);
> int64_t (*get_arch_id)(CPUState *cpu);
> void (*set_pc)(CPUState *cpu, vaddr value);
> int (*gdb_read_register)(CPUState *cpu, GByteArray *buf, int reg);
> @@ -537,6 +539,15 @@ enum CPUDumpFlags {
> */
> void cpu_dump_state(CPUState *cpu, FILE *f, int flags);
>
> +/**
> + * cpu_format_state:
> + * @cpu: The CPU whose state is to be formatted.
> + * @buf: buffer to format state into
> + *
> + * Formats the CPU state.
> + */
> +void cpu_format_state(CPUState *cpu, GString *buf, int flags);
> +
> #ifndef CONFIG_USER_ONLY
> /**
> * cpu_get_phys_page_attrs_debug:
- Re: [PATCH v2 02/53] docs/devel: tweak headings in monitor command docs, (continued)
- [PATCH v2 03/53] docs/devel: document expectations for QAPI data modelling for QMP, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 04/53] docs/devel: add example of command returning unstructured text, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 05/53] docs/devel: document expectations for HMP commands in the future, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 06/53] hw/core: introduce 'format_state' callback to replace 'dump_state', Daniel P . Berrangé, 2021/09/14
- [PATCH v2 07/53] target/alpha: convert to use format_state instead of dump_state, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 08/53] target/arm: convert to use format_state instead of dump_state, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 09/53] target/avr: convert to use format_state instead of dump_state, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 10/53] target/cris: convert to use format_state instead of dump_state, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 11/53] target/hexagon: delete unused hexagon_debug() method, Daniel P . Berrangé, 2021/09/14