提交 92a31361 编写于 作者: A Andreas Färber

cpu: Introduce CPUListState struct

This generalizes {ARM,M68k,Alpha}CPUListState to avoid declaring it for
each target. Place it in cpu-common.h to avoid circular dependencies.
Signed-off-by: NAndreas Färber <afaerber@suse.de>
Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
上级 494342b3
...@@ -12,6 +12,18 @@ ...@@ -12,6 +12,18 @@
#include "bswap.h" #include "bswap.h"
#include "qemu-queue.h" #include "qemu-queue.h"
/**
* CPUListState:
* @cpu_fprintf: Print function.
* @file: File to print to using @cpu_fprint.
*
* State commonly used for iterating over CPU models.
*/
typedef struct CPUListState {
fprintf_function cpu_fprintf;
FILE *file;
} CPUListState;
#if !defined(CONFIG_USER_ONLY) #if !defined(CONFIG_USER_ONLY)
enum device_endian { enum device_endian {
......
...@@ -33,11 +33,6 @@ static void alpha_cpu_realize(Object *obj, Error **errp) ...@@ -33,11 +33,6 @@ static void alpha_cpu_realize(Object *obj, Error **errp)
#endif #endif
} }
typedef struct AlphaCPUListState {
fprintf_function cpu_fprintf;
FILE *file;
} AlphaCPUListState;
/* Sort alphabetically by type name. */ /* Sort alphabetically by type name. */
static gint alpha_cpu_list_compare(gconstpointer a, gconstpointer b) static gint alpha_cpu_list_compare(gconstpointer a, gconstpointer b)
{ {
...@@ -53,7 +48,7 @@ static gint alpha_cpu_list_compare(gconstpointer a, gconstpointer b) ...@@ -53,7 +48,7 @@ static gint alpha_cpu_list_compare(gconstpointer a, gconstpointer b)
static void alpha_cpu_list_entry(gpointer data, gpointer user_data) static void alpha_cpu_list_entry(gpointer data, gpointer user_data)
{ {
ObjectClass *oc = data; ObjectClass *oc = data;
AlphaCPUListState *s = user_data; CPUListState *s = user_data;
(*s->cpu_fprintf)(s->file, " %s\n", (*s->cpu_fprintf)(s->file, " %s\n",
object_class_get_name(oc)); object_class_get_name(oc));
...@@ -61,7 +56,7 @@ static void alpha_cpu_list_entry(gpointer data, gpointer user_data) ...@@ -61,7 +56,7 @@ static void alpha_cpu_list_entry(gpointer data, gpointer user_data)
void alpha_cpu_list(FILE *f, fprintf_function cpu_fprintf) void alpha_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{ {
AlphaCPUListState s = { CPUListState s = {
.file = f, .file = f,
.cpu_fprintf = cpu_fprintf, .cpu_fprintf = cpu_fprintf,
}; };
......
...@@ -1291,11 +1291,6 @@ ARMCPU *cpu_arm_init(const char *cpu_model) ...@@ -1291,11 +1291,6 @@ ARMCPU *cpu_arm_init(const char *cpu_model)
return cpu; return cpu;
} }
typedef struct ARMCPUListState {
fprintf_function cpu_fprintf;
FILE *file;
} ARMCPUListState;
/* Sort alphabetically by type name, except for "any". */ /* Sort alphabetically by type name, except for "any". */
static gint arm_cpu_list_compare(gconstpointer a, gconstpointer b) static gint arm_cpu_list_compare(gconstpointer a, gconstpointer b)
{ {
...@@ -1317,7 +1312,7 @@ static gint arm_cpu_list_compare(gconstpointer a, gconstpointer b) ...@@ -1317,7 +1312,7 @@ static gint arm_cpu_list_compare(gconstpointer a, gconstpointer b)
static void arm_cpu_list_entry(gpointer data, gpointer user_data) static void arm_cpu_list_entry(gpointer data, gpointer user_data)
{ {
ObjectClass *oc = data; ObjectClass *oc = data;
ARMCPUListState *s = user_data; CPUListState *s = user_data;
(*s->cpu_fprintf)(s->file, " %s\n", (*s->cpu_fprintf)(s->file, " %s\n",
object_class_get_name(oc)); object_class_get_name(oc));
...@@ -1325,7 +1320,7 @@ static void arm_cpu_list_entry(gpointer data, gpointer user_data) ...@@ -1325,7 +1320,7 @@ static void arm_cpu_list_entry(gpointer data, gpointer user_data)
void arm_cpu_list(FILE *f, fprintf_function cpu_fprintf) void arm_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{ {
ARMCPUListState s = { CPUListState s = {
.file = f, .file = f,
.cpu_fprintf = cpu_fprintf, .cpu_fprintf = cpu_fprintf,
}; };
......
...@@ -25,11 +25,6 @@ ...@@ -25,11 +25,6 @@
#define SIGNBIT (1u << 31) #define SIGNBIT (1u << 31)
typedef struct M68kCPUListState {
fprintf_function cpu_fprintf;
FILE *file;
} M68kCPUListState;
/* Sort alphabetically, except for "any". */ /* Sort alphabetically, except for "any". */
static gint m68k_cpu_list_compare(gconstpointer a, gconstpointer b) static gint m68k_cpu_list_compare(gconstpointer a, gconstpointer b)
{ {
...@@ -51,7 +46,7 @@ static gint m68k_cpu_list_compare(gconstpointer a, gconstpointer b) ...@@ -51,7 +46,7 @@ static gint m68k_cpu_list_compare(gconstpointer a, gconstpointer b)
static void m68k_cpu_list_entry(gpointer data, gpointer user_data) static void m68k_cpu_list_entry(gpointer data, gpointer user_data)
{ {
ObjectClass *c = data; ObjectClass *c = data;
M68kCPUListState *s = user_data; CPUListState *s = user_data;
(*s->cpu_fprintf)(s->file, "%s\n", (*s->cpu_fprintf)(s->file, "%s\n",
object_class_get_name(c)); object_class_get_name(c));
...@@ -59,7 +54,7 @@ static void m68k_cpu_list_entry(gpointer data, gpointer user_data) ...@@ -59,7 +54,7 @@ static void m68k_cpu_list_entry(gpointer data, gpointer user_data)
void m68k_cpu_list(FILE *f, fprintf_function cpu_fprintf) void m68k_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{ {
M68kCPUListState s = { CPUListState s = {
.file = f, .file = f,
.cpu_fprintf = cpu_fprintf, .cpu_fprintf = cpu_fprintf,
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册