Message ID | 20240315130910.15750-20-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | qapi: Make @query-cpu-definitions command target-agnostic | expand |
On Fri Mar 15, 2024 at 11:09 PM AEST, Philippe Mathieu-Daudé wrote: > Factor ppc_add_alias_definitions() out of qmp_query_cpu_definitions() > to clearly see the generic pattern used in all targets. Looks equivalent. Reviewed-by: Nicholas Piggin <npiggin@gmail.com> > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/ppc/cpu-models.h | 4 ++++ > target/ppc/ppc-qmp-cmds.c | 26 +++++++++++++++----------- > 2 files changed, 19 insertions(+), 11 deletions(-) > > diff --git a/target/ppc/cpu-models.h b/target/ppc/cpu-models.h > index 0229ef3a9a..89a5e232b7 100644 > --- a/target/ppc/cpu-models.h > +++ b/target/ppc/cpu-models.h > @@ -21,6 +21,8 @@ > #ifndef TARGET_PPC_CPU_MODELS_H > #define TARGET_PPC_CPU_MODELS_H > > +#include "qapi/qapi-types-machine.h" > + > /** > * PowerPCCPUAlias: > * @alias: The alias name. > @@ -480,4 +482,6 @@ enum { > POWERPC_SVR_8641D = 0x80900121, > }; > > +void ppc_add_alias_definitions(CpuDefinitionInfoList **cpu_list); > + > #endif > diff --git a/target/ppc/ppc-qmp-cmds.c b/target/ppc/ppc-qmp-cmds.c > index a25d86a8d1..528cc3e4af 100644 > --- a/target/ppc/ppc-qmp-cmds.c > +++ b/target/ppc/ppc-qmp-cmds.c > @@ -189,17 +189,9 @@ static void ppc_cpu_defs_entry(gpointer data, gpointer user_data) > QAPI_LIST_PREPEND(*first, info); > } > > -CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp) > +void ppc_add_alias_definitions(CpuDefinitionInfoList **cpu_list) > { > - CpuDefinitionInfoList *cpu_list = NULL; > - GSList *list; > - int i; > - > - list = object_class_get_list(TYPE_POWERPC_CPU, false); > - g_slist_foreach(list, ppc_cpu_defs_entry, &cpu_list); > - g_slist_free(list); > - > - for (i = 0; ppc_cpu_aliases[i].alias != NULL; i++) { > + for (unsigned i = 0; ppc_cpu_aliases[i].alias != NULL; i++) { > PowerPCCPUAlias *alias = &ppc_cpu_aliases[i]; > ObjectClass *oc; > CpuDefinitionInfo *info; > @@ -213,8 +205,20 @@ CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp) > info->name = g_strdup(alias->alias); > info->q_typename = g_strdup(object_class_get_name(oc)); > > - QAPI_LIST_PREPEND(cpu_list, info); > + QAPI_LIST_PREPEND(*cpu_list, info); > } > +} > + > +CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp) > +{ > + CpuDefinitionInfoList *cpu_list = NULL; > + GSList *list; > + > + list = object_class_get_list(TYPE_POWERPC_CPU, false); > + g_slist_foreach(list, ppc_cpu_defs_entry, &cpu_list); > + g_slist_free(list); > + > + ppc_add_alias_definitions(&cpu_list); > > return cpu_list; > }
diff --git a/target/ppc/cpu-models.h b/target/ppc/cpu-models.h index 0229ef3a9a..89a5e232b7 100644 --- a/target/ppc/cpu-models.h +++ b/target/ppc/cpu-models.h @@ -21,6 +21,8 @@ #ifndef TARGET_PPC_CPU_MODELS_H #define TARGET_PPC_CPU_MODELS_H +#include "qapi/qapi-types-machine.h" + /** * PowerPCCPUAlias: * @alias: The alias name. @@ -480,4 +482,6 @@ enum { POWERPC_SVR_8641D = 0x80900121, }; +void ppc_add_alias_definitions(CpuDefinitionInfoList **cpu_list); + #endif diff --git a/target/ppc/ppc-qmp-cmds.c b/target/ppc/ppc-qmp-cmds.c index a25d86a8d1..528cc3e4af 100644 --- a/target/ppc/ppc-qmp-cmds.c +++ b/target/ppc/ppc-qmp-cmds.c @@ -189,17 +189,9 @@ static void ppc_cpu_defs_entry(gpointer data, gpointer user_data) QAPI_LIST_PREPEND(*first, info); } -CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp) +void ppc_add_alias_definitions(CpuDefinitionInfoList **cpu_list) { - CpuDefinitionInfoList *cpu_list = NULL; - GSList *list; - int i; - - list = object_class_get_list(TYPE_POWERPC_CPU, false); - g_slist_foreach(list, ppc_cpu_defs_entry, &cpu_list); - g_slist_free(list); - - for (i = 0; ppc_cpu_aliases[i].alias != NULL; i++) { + for (unsigned i = 0; ppc_cpu_aliases[i].alias != NULL; i++) { PowerPCCPUAlias *alias = &ppc_cpu_aliases[i]; ObjectClass *oc; CpuDefinitionInfo *info; @@ -213,8 +205,20 @@ CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp) info->name = g_strdup(alias->alias); info->q_typename = g_strdup(object_class_get_name(oc)); - QAPI_LIST_PREPEND(cpu_list, info); + QAPI_LIST_PREPEND(*cpu_list, info); } +} + +CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp) +{ + CpuDefinitionInfoList *cpu_list = NULL; + GSList *list; + + list = object_class_get_list(TYPE_POWERPC_CPU, false); + g_slist_foreach(list, ppc_cpu_defs_entry, &cpu_list); + g_slist_free(list); + + ppc_add_alias_definitions(&cpu_list); return cpu_list; }
Factor ppc_add_alias_definitions() out of qmp_query_cpu_definitions() to clearly see the generic pattern used in all targets. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/ppc/cpu-models.h | 4 ++++ target/ppc/ppc-qmp-cmds.c | 26 +++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-)