1 | /* AUTOMATICALLY GENERATED, DO NOT MODIFY */ |
2 | |
3 | /* |
4 | * Schema-defined QAPI/QMP events |
5 | * |
6 | * Copyright (c) 2014 Wenchao Xia |
7 | * Copyright (c) 2015-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 | #include "qemu/osdep.h" |
14 | #include "qapi-emit-events.h" |
15 | #include "qapi-events-block-core.h" |
16 | #include "qapi-visit-block-core.h" |
17 | #include "qapi/error.h" |
18 | #include "qapi/qmp/qdict.h" |
19 | #include "qapi/qobject-output-visitor.h" |
20 | #include "qapi/qmp-event.h" |
21 | |
22 | |
23 | void qapi_event_send_block_image_corrupted(const char *device, bool has_node_name, const char *node_name, const char *msg, bool has_offset, int64_t offset, bool has_size, int64_t size, bool fatal) |
24 | { |
25 | QDict *qmp; |
26 | QObject *obj; |
27 | Visitor *v; |
28 | q_obj_BLOCK_IMAGE_CORRUPTED_arg param = { |
29 | (char *)device, has_node_name, (char *)node_name, (char *)msg, has_offset, offset, has_size, size, fatal |
30 | }; |
31 | |
32 | qmp = qmp_event_build_dict("BLOCK_IMAGE_CORRUPTED" ); |
33 | |
34 | v = qobject_output_visitor_new(&obj); |
35 | |
36 | visit_start_struct(v, "BLOCK_IMAGE_CORRUPTED" , NULL, 0, &error_abort); |
37 | visit_type_q_obj_BLOCK_IMAGE_CORRUPTED_arg_members(v, ¶m, &error_abort); |
38 | visit_check_struct(v, &error_abort); |
39 | visit_end_struct(v, NULL); |
40 | |
41 | visit_complete(v, &obj); |
42 | qdict_put_obj(qmp, "data" , obj); |
43 | qapi_event_emit(QAPI_EVENT_BLOCK_IMAGE_CORRUPTED, qmp); |
44 | |
45 | visit_free(v); |
46 | qobject_unref(qmp); |
47 | } |
48 | |
49 | void qapi_event_send_block_io_error(const char *device, bool has_node_name, const char *node_name, IoOperationType operation, BlockErrorAction action, bool has_nospace, bool nospace, const char *reason) |
50 | { |
51 | QDict *qmp; |
52 | QObject *obj; |
53 | Visitor *v; |
54 | q_obj_BLOCK_IO_ERROR_arg param = { |
55 | (char *)device, has_node_name, (char *)node_name, operation, action, has_nospace, nospace, (char *)reason |
56 | }; |
57 | |
58 | qmp = qmp_event_build_dict("BLOCK_IO_ERROR" ); |
59 | |
60 | v = qobject_output_visitor_new(&obj); |
61 | |
62 | visit_start_struct(v, "BLOCK_IO_ERROR" , NULL, 0, &error_abort); |
63 | visit_type_q_obj_BLOCK_IO_ERROR_arg_members(v, ¶m, &error_abort); |
64 | visit_check_struct(v, &error_abort); |
65 | visit_end_struct(v, NULL); |
66 | |
67 | visit_complete(v, &obj); |
68 | qdict_put_obj(qmp, "data" , obj); |
69 | qapi_event_emit(QAPI_EVENT_BLOCK_IO_ERROR, qmp); |
70 | |
71 | visit_free(v); |
72 | qobject_unref(qmp); |
73 | } |
74 | |
75 | void qapi_event_send_block_job_completed(JobType type, const char *device, int64_t len, int64_t offset, int64_t speed, bool has_error, const char *error) |
76 | { |
77 | QDict *qmp; |
78 | QObject *obj; |
79 | Visitor *v; |
80 | q_obj_BLOCK_JOB_COMPLETED_arg param = { |
81 | type, (char *)device, len, offset, speed, has_error, (char *)error |
82 | }; |
83 | |
84 | qmp = qmp_event_build_dict("BLOCK_JOB_COMPLETED" ); |
85 | |
86 | v = qobject_output_visitor_new(&obj); |
87 | |
88 | visit_start_struct(v, "BLOCK_JOB_COMPLETED" , NULL, 0, &error_abort); |
89 | visit_type_q_obj_BLOCK_JOB_COMPLETED_arg_members(v, ¶m, &error_abort); |
90 | visit_check_struct(v, &error_abort); |
91 | visit_end_struct(v, NULL); |
92 | |
93 | visit_complete(v, &obj); |
94 | qdict_put_obj(qmp, "data" , obj); |
95 | qapi_event_emit(QAPI_EVENT_BLOCK_JOB_COMPLETED, qmp); |
96 | |
97 | visit_free(v); |
98 | qobject_unref(qmp); |
99 | } |
100 | |
101 | void qapi_event_send_block_job_cancelled(JobType type, const char *device, int64_t len, int64_t offset, int64_t speed) |
102 | { |
103 | QDict *qmp; |
104 | QObject *obj; |
105 | Visitor *v; |
106 | q_obj_BLOCK_JOB_CANCELLED_arg param = { |
107 | type, (char *)device, len, offset, speed |
108 | }; |
109 | |
110 | qmp = qmp_event_build_dict("BLOCK_JOB_CANCELLED" ); |
111 | |
112 | v = qobject_output_visitor_new(&obj); |
113 | |
114 | visit_start_struct(v, "BLOCK_JOB_CANCELLED" , NULL, 0, &error_abort); |
115 | visit_type_q_obj_BLOCK_JOB_CANCELLED_arg_members(v, ¶m, &error_abort); |
116 | visit_check_struct(v, &error_abort); |
117 | visit_end_struct(v, NULL); |
118 | |
119 | visit_complete(v, &obj); |
120 | qdict_put_obj(qmp, "data" , obj); |
121 | qapi_event_emit(QAPI_EVENT_BLOCK_JOB_CANCELLED, qmp); |
122 | |
123 | visit_free(v); |
124 | qobject_unref(qmp); |
125 | } |
126 | |
127 | void qapi_event_send_block_job_error(const char *device, IoOperationType operation, BlockErrorAction action) |
128 | { |
129 | QDict *qmp; |
130 | QObject *obj; |
131 | Visitor *v; |
132 | q_obj_BLOCK_JOB_ERROR_arg param = { |
133 | (char *)device, operation, action |
134 | }; |
135 | |
136 | qmp = qmp_event_build_dict("BLOCK_JOB_ERROR" ); |
137 | |
138 | v = qobject_output_visitor_new(&obj); |
139 | |
140 | visit_start_struct(v, "BLOCK_JOB_ERROR" , NULL, 0, &error_abort); |
141 | visit_type_q_obj_BLOCK_JOB_ERROR_arg_members(v, ¶m, &error_abort); |
142 | visit_check_struct(v, &error_abort); |
143 | visit_end_struct(v, NULL); |
144 | |
145 | visit_complete(v, &obj); |
146 | qdict_put_obj(qmp, "data" , obj); |
147 | qapi_event_emit(QAPI_EVENT_BLOCK_JOB_ERROR, qmp); |
148 | |
149 | visit_free(v); |
150 | qobject_unref(qmp); |
151 | } |
152 | |
153 | void qapi_event_send_block_job_ready(JobType type, const char *device, int64_t len, int64_t offset, int64_t speed) |
154 | { |
155 | QDict *qmp; |
156 | QObject *obj; |
157 | Visitor *v; |
158 | q_obj_BLOCK_JOB_READY_arg param = { |
159 | type, (char *)device, len, offset, speed |
160 | }; |
161 | |
162 | qmp = qmp_event_build_dict("BLOCK_JOB_READY" ); |
163 | |
164 | v = qobject_output_visitor_new(&obj); |
165 | |
166 | visit_start_struct(v, "BLOCK_JOB_READY" , NULL, 0, &error_abort); |
167 | visit_type_q_obj_BLOCK_JOB_READY_arg_members(v, ¶m, &error_abort); |
168 | visit_check_struct(v, &error_abort); |
169 | visit_end_struct(v, NULL); |
170 | |
171 | visit_complete(v, &obj); |
172 | qdict_put_obj(qmp, "data" , obj); |
173 | qapi_event_emit(QAPI_EVENT_BLOCK_JOB_READY, qmp); |
174 | |
175 | visit_free(v); |
176 | qobject_unref(qmp); |
177 | } |
178 | |
179 | void qapi_event_send_block_job_pending(JobType type, const char *id) |
180 | { |
181 | QDict *qmp; |
182 | QObject *obj; |
183 | Visitor *v; |
184 | q_obj_BLOCK_JOB_PENDING_arg param = { |
185 | type, (char *)id |
186 | }; |
187 | |
188 | qmp = qmp_event_build_dict("BLOCK_JOB_PENDING" ); |
189 | |
190 | v = qobject_output_visitor_new(&obj); |
191 | |
192 | visit_start_struct(v, "BLOCK_JOB_PENDING" , NULL, 0, &error_abort); |
193 | visit_type_q_obj_BLOCK_JOB_PENDING_arg_members(v, ¶m, &error_abort); |
194 | visit_check_struct(v, &error_abort); |
195 | visit_end_struct(v, NULL); |
196 | |
197 | visit_complete(v, &obj); |
198 | qdict_put_obj(qmp, "data" , obj); |
199 | qapi_event_emit(QAPI_EVENT_BLOCK_JOB_PENDING, qmp); |
200 | |
201 | visit_free(v); |
202 | qobject_unref(qmp); |
203 | } |
204 | |
205 | void qapi_event_send_block_write_threshold(const char *node_name, uint64_t amount_exceeded, uint64_t write_threshold) |
206 | { |
207 | QDict *qmp; |
208 | QObject *obj; |
209 | Visitor *v; |
210 | q_obj_BLOCK_WRITE_THRESHOLD_arg param = { |
211 | (char *)node_name, amount_exceeded, write_threshold |
212 | }; |
213 | |
214 | qmp = qmp_event_build_dict("BLOCK_WRITE_THRESHOLD" ); |
215 | |
216 | v = qobject_output_visitor_new(&obj); |
217 | |
218 | visit_start_struct(v, "BLOCK_WRITE_THRESHOLD" , NULL, 0, &error_abort); |
219 | visit_type_q_obj_BLOCK_WRITE_THRESHOLD_arg_members(v, ¶m, &error_abort); |
220 | visit_check_struct(v, &error_abort); |
221 | visit_end_struct(v, NULL); |
222 | |
223 | visit_complete(v, &obj); |
224 | qdict_put_obj(qmp, "data" , obj); |
225 | qapi_event_emit(QAPI_EVENT_BLOCK_WRITE_THRESHOLD, qmp); |
226 | |
227 | visit_free(v); |
228 | qobject_unref(qmp); |
229 | } |
230 | |
231 | /* Dummy declaration to prevent empty .o file */ |
232 | char qapi_dummy_qapi_events_block_core_c; |
233 | |