diff options
author | Philippe Mathieu-Daudé <philmd@linaro.org> | 2025-03-23 16:09:06 +0100 |
---|---|---|
committer | Philippe Mathieu-Daudé <philmd@linaro.org> | 2025-04-25 12:59:09 +0200 |
commit | 0a5692fecc76c6fee9a4fc86dbe8faf84ce30ce8 (patch) | |
tree | eb6c818962ebcdafdf74eca06c33a2ea41ff7cff | |
parent | 9ce6caa0d94a52a0ada77f494e8e23e62198aef0 (diff) | |
download | qemu-0a5692fecc76c6fee9a4fc86dbe8faf84ce30ce8.zip qemu-0a5692fecc76c6fee9a4fc86dbe8faf84ce30ce8.tar.gz qemu-0a5692fecc76c6fee9a4fc86dbe8faf84ce30ce8.tar.bz2 |
cpus: Introduce CPUClass::list_cpus() callback
Some targets define cpu_list to a method listing their
CPUs on stdout. In order to make list_cpus() generic,
introduce the CPUClass::list_cpus() callback.
When no callback is registered, list_cpus() defaults
to the cpu_list definition.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Message-Id: <20250324185837.46506-2-philmd@linaro.org>
-rw-r--r-- | cpu-target.c | 8 | ||||
-rw-r--r-- | include/hw/core/cpu.h | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/cpu-target.c b/cpu-target.c index 14cd623..d139a18 100644 --- a/cpu-target.c +++ b/cpu-target.c @@ -104,7 +104,13 @@ static void cpu_list(void) void list_cpus(void) { - cpu_list(); + CPUClass *cc = CPU_CLASS(object_class_by_name(CPU_RESOLVING_TYPE)); + + if (cc->list_cpus) { + cc->list_cpus(); + } else { + cpu_list(); + } } /* enable or disable single step mode. EXCP_DEBUG is returned by the diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index c8d6abf..5b645df 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -102,6 +102,7 @@ struct SysemuCPUOps; * CPUClass: * @class_by_name: Callback to map -cpu command line model name to an * instantiatable CPU type. + * @list_cpus: list available CPU models and flags. * @parse_features: Callback to parse command line arguments. * @reset_dump_flags: #CPUDumpFlags to use for reset logging. * @memory_rw_debug: Callback for GDB memory access. @@ -148,6 +149,7 @@ struct CPUClass { /*< public >*/ ObjectClass *(*class_by_name)(const char *cpu_model); + void (*list_cpus)(void); void (*parse_features)(const char *typename, char *str, Error **errp); int (*memory_rw_debug)(CPUState *cpu, vaddr addr, |