void s390_cpu_list(FILE *f, fprintf_function print) { struct S390PrintCpuListInfo info = { .f = f, .print = print, }; S390FeatGroup group; S390Feat feat; object_class_foreach(print_cpu_model_list, TYPE_S390_CPU, false, &info); (*print)(f, "\nRecognized feature flags:\n"); for (feat = 0; feat < S390_FEAT_MAX; feat++) { const S390FeatDef *def = s390_feat_def(feat); (*print)(f, "%-20s %-50s\n", def->name, def->desc); } (*print)(f, "\nRecognized feature groups:\n"); for (group = 0; group < S390_FEAT_GROUP_MAX; group++) { const S390FeatGroupDef *def = s390_feat_group_def(group); (*print)(f, "%-20s %-50s\n", def->name, def->desc); } }
CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp) { CpuDefinitionInfoList *list = NULL; object_class_foreach(create_cpu_model_list, TYPE_S390_CPU, false, &list); return list; }
ObjectTypeInfoList *qmp_qom_list_types(bool has_implements, const char *implements, bool has_abstract, bool abstract, Error **errp) { ObjectTypeInfoList *ret = NULL; object_class_foreach(qom_list_types_tramp, implements, abstract, &ret); return ret; }
CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp) { struct CpuDefinitionInfoListData list_data = { .list = NULL, }; list_data.model = get_max_cpu_model(errp); if (*errp) { error_free(*errp); *errp = NULL; } object_class_foreach(create_cpu_model_list, TYPE_S390_CPU, false, &list_data); return list_data.list; }