1/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
2
3/*
4 * Schema-defined QAPI types
5 *
6 * Copyright IBM, Corp. 2011
7 * Copyright (c) 2013-2018 Red Hat Inc.
8 *
9 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
10 * See the COPYING.LIB file in the top-level directory.
11 */
12
13#ifndef QAPI_TYPES_MACHINE_TARGET_H
14#define QAPI_TYPES_MACHINE_TARGET_H
15
16#include "qapi/qapi-builtin-types.h"
17
18typedef struct CpuModelInfo CpuModelInfo;
19
20typedef enum CpuModelExpansionType {
21 CPU_MODEL_EXPANSION_TYPE_STATIC,
22 CPU_MODEL_EXPANSION_TYPE_FULL,
23 CPU_MODEL_EXPANSION_TYPE__MAX,
24} CpuModelExpansionType;
25
26#define CpuModelExpansionType_str(val) \
27 qapi_enum_lookup(&CpuModelExpansionType_lookup, (val))
28
29extern const QEnumLookup CpuModelExpansionType_lookup;
30
31typedef enum CpuModelCompareResult {
32 CPU_MODEL_COMPARE_RESULT_INCOMPATIBLE,
33 CPU_MODEL_COMPARE_RESULT_IDENTICAL,
34 CPU_MODEL_COMPARE_RESULT_SUPERSET,
35 CPU_MODEL_COMPARE_RESULT_SUBSET,
36 CPU_MODEL_COMPARE_RESULT__MAX,
37} CpuModelCompareResult;
38
39#define CpuModelCompareResult_str(val) \
40 qapi_enum_lookup(&CpuModelCompareResult_lookup, (val))
41
42extern const QEnumLookup CpuModelCompareResult_lookup;
43
44#if defined(TARGET_S390X)
45typedef struct CpuModelBaselineInfo CpuModelBaselineInfo;
46#endif /* defined(TARGET_S390X) */
47
48#if defined(TARGET_S390X)
49typedef struct CpuModelCompareInfo CpuModelCompareInfo;
50#endif /* defined(TARGET_S390X) */
51
52#if defined(TARGET_S390X)
53typedef struct q_obj_query_cpu_model_comparison_arg q_obj_query_cpu_model_comparison_arg;
54#endif /* defined(TARGET_S390X) */
55
56#if defined(TARGET_S390X)
57typedef struct q_obj_query_cpu_model_baseline_arg q_obj_query_cpu_model_baseline_arg;
58#endif /* defined(TARGET_S390X) */
59
60#if defined(TARGET_S390X) || defined(TARGET_I386)
61typedef struct CpuModelExpansionInfo CpuModelExpansionInfo;
62#endif /* defined(TARGET_S390X) || defined(TARGET_I386) */
63
64#if defined(TARGET_S390X) || defined(TARGET_I386)
65typedef struct q_obj_query_cpu_model_expansion_arg q_obj_query_cpu_model_expansion_arg;
66#endif /* defined(TARGET_S390X) || defined(TARGET_I386) */
67
68#if defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS)
69typedef struct CpuDefinitionInfo CpuDefinitionInfo;
70#endif /* defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS) */
71
72#if defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS)
73typedef struct CpuDefinitionInfoList CpuDefinitionInfoList;
74#endif /* defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS) */
75
76struct CpuModelInfo {
77 char *name;
78 bool has_props;
79 QObject *props;
80};
81
82void qapi_free_CpuModelInfo(CpuModelInfo *obj);
83
84#if defined(TARGET_S390X)
85struct CpuModelBaselineInfo {
86 CpuModelInfo *model;
87};
88#endif /* defined(TARGET_S390X) */
89
90#if defined(TARGET_S390X)
91void qapi_free_CpuModelBaselineInfo(CpuModelBaselineInfo *obj);
92#endif /* defined(TARGET_S390X) */
93
94#if defined(TARGET_S390X)
95struct CpuModelCompareInfo {
96 CpuModelCompareResult result;
97 strList *responsible_properties;
98};
99#endif /* defined(TARGET_S390X) */
100
101#if defined(TARGET_S390X)
102void qapi_free_CpuModelCompareInfo(CpuModelCompareInfo *obj);
103#endif /* defined(TARGET_S390X) */
104
105#if defined(TARGET_S390X)
106struct q_obj_query_cpu_model_comparison_arg {
107 CpuModelInfo *modela;
108 CpuModelInfo *modelb;
109};
110#endif /* defined(TARGET_S390X) */
111
112#if defined(TARGET_S390X)
113struct q_obj_query_cpu_model_baseline_arg {
114 CpuModelInfo *modela;
115 CpuModelInfo *modelb;
116};
117#endif /* defined(TARGET_S390X) */
118
119#if defined(TARGET_S390X) || defined(TARGET_I386)
120struct CpuModelExpansionInfo {
121 CpuModelInfo *model;
122};
123#endif /* defined(TARGET_S390X) || defined(TARGET_I386) */
124
125#if defined(TARGET_S390X) || defined(TARGET_I386)
126void qapi_free_CpuModelExpansionInfo(CpuModelExpansionInfo *obj);
127#endif /* defined(TARGET_S390X) || defined(TARGET_I386) */
128
129#if defined(TARGET_S390X) || defined(TARGET_I386)
130struct q_obj_query_cpu_model_expansion_arg {
131 CpuModelExpansionType type;
132 CpuModelInfo *model;
133};
134#endif /* defined(TARGET_S390X) || defined(TARGET_I386) */
135
136#if defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS)
137struct CpuDefinitionInfo {
138 char *name;
139 bool has_migration_safe;
140 bool migration_safe;
141 bool q_static;
142 bool has_unavailable_features;
143 strList *unavailable_features;
144 char *q_typename;
145 bool has_alias_of;
146 char *alias_of;
147};
148#endif /* defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS) */
149
150#if defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS)
151void qapi_free_CpuDefinitionInfo(CpuDefinitionInfo *obj);
152#endif /* defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS) */
153
154#if defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS)
155struct CpuDefinitionInfoList {
156 CpuDefinitionInfoList *next;
157 CpuDefinitionInfo *value;
158};
159
160void qapi_free_CpuDefinitionInfoList(CpuDefinitionInfoList *obj);
161#endif /* defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X) || defined(TARGET_MIPS) */
162
163#endif /* QAPI_TYPES_MACHINE_TARGET_H */
164