[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH-for-10.1 v2 1/7] cpus: Introduce CPUClass::list_cpus() callback
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH-for-10.1 v2 1/7] cpus: Introduce CPUClass::list_cpus() callback |
Date: |
Mon, 24 Mar 2025 19:46:05 +0100 |
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>
---
include/hw/core/cpu.h | 2 ++
cpu-target.c | 8 +++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index 54570d21aea..b633766ee8f 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.
* @mmu_index: Callback for choosing softmmu mmu index;
@@ -150,6 +151,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 (*mmu_index)(CPUState *cpu, bool ifetch);
diff --git a/cpu-target.c b/cpu-target.c
index cae77374b38..5947ca31a0a 100644
--- a/cpu-target.c
+++ b/cpu-target.c
@@ -98,7 +98,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
--
2.47.1
- [PATCH-for-10.1 v2 0/7] cpus: Convert cpu_list definition to CPUClass:list_cpus callback, Philippe Mathieu-Daudé, 2025/03/24
- [PATCH-for-10.1 v2 1/7] cpus: Introduce CPUClass::list_cpus() callback,
Philippe Mathieu-Daudé <=
- [PATCH-for-10.1 v2 2/7] target/i386: Register CPUClass:list_cpus, Philippe Mathieu-Daudé, 2025/03/24
- [PATCH-for-10.1 v2 3/7] target/ppc: Register CPUClass:list_cpus, Philippe Mathieu-Daudé, 2025/03/24
- [PATCH-for-10.1 v2 4/7] target/sparc: Register CPUClass:list_cpus, Philippe Mathieu-Daudé, 2025/03/24
- [PATCH-for-10.1 v2 5/7] target/s390x: Declare s390_set_qemu_cpu_model/cpu_list in cpu_models.h, Philippe Mathieu-Daudé, 2025/03/24
- [PATCH-for-10.1 v2 6/7] target/s390x: Register CPUClass:list_cpus, Philippe Mathieu-Daudé, 2025/03/24
- [PATCH-for-10.1 v2 7/7] cpus: Remove #ifdef check on cpu_list definition, Philippe Mathieu-Daudé, 2025/03/24
- Re: [PATCH-for-10.1 v2 0/7] cpus: Convert cpu_list definition to CPUClass:list_cpus callback, Richard Henderson, 2025/03/24
- Re: [PATCH-for-10.1 v2 0/7] cpus: Convert cpu_list definition to CPUClass:list_cpus callback, Pierrick Bouvier, 2025/03/24