mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-18 05:45:29 -07:00
Rather than generate inline per-member visits, take advantage
of the 'visit_type_FOO_members()' function for emitting events.
This is possible now that implicit structs can be visited like
any other. Generated code shrinks accordingly; by initializing
a struct based on parameters, through a new gen_param_var()
helper, like:
|@@ -338,6 +250,9 @@ void qapi_event_send_block_job_error(con
| QMPEventFuncEmit emit = qmp_event_get_func_emit();
| QmpOutputVisitor *qov;
| Visitor *v;
|+ q_obj_BLOCK_JOB_ERROR_arg param = {
|+ (char *)device, operation, action
|+ };
|
| if (!emit) {
| return;
@@ -351,19 +266,7 @@ void qapi_event_send_block_job_error(con
| if (err) {
| goto out;
| }
|- visit_type_str(v, "device", (char **)&device, &err);
|- if (err) {
|- goto out_obj;
|- }
|- visit_type_IoOperationType(v, "operation", &operation, &err);
|- if (err) {
|- goto out_obj;
|- }
|- visit_type_BlockErrorAction(v, "action", &action, &err);
|- if (err) {
|- goto out_obj;
|- }
|-out_obj:
|+ visit_type_q_obj_BLOCK_JOB_ERROR_arg_members(v, ¶m, &err);
| visit_end_struct(v, err ? NULL : &err);
Notice that the initialization of 'param' has to cast away const
(just as the old gen_visit_members() had to do): we can't change
the signature of the user function (which uses 'const char *'), but
have to assign it to a non-const QAPI object (which requires
'char *').
While touching this, document with a FIXME comment that there is
still a potential collision between QMP members and our choice of
local variable names within qapi_event_send_FOO().
This patch also paves the way for some followup simplifications
in the generator, in subsequent patches.
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1458254921-17042-8-git-send-email-eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
|
||
|---|---|---|
| .. | ||
| kvm | ||
| qemu-guest-agent | ||
| qemugdb | ||
| qmp | ||
| tracetool | ||
| analyse-9p-simpletrace.py | ||
| analyze-migration.py | ||
| check-qerror.sh | ||
| checkpatch.pl | ||
| clean-includes | ||
| cleanup-trace-events.pl | ||
| cocci-macro-file.h | ||
| coverity-model.c | ||
| create_config | ||
| disas-objdump.pl | ||
| dump-guest-memory.py | ||
| extract-vsssdk-headers | ||
| feature_to_c.sh | ||
| get_maintainer.pl | ||
| gtester-cat | ||
| hxtool | ||
| make-release | ||
| make_device_config.sh | ||
| ordereddict.py | ||
| qapi-commands.py | ||
| qapi-event.py | ||
| qapi-introspect.py | ||
| qapi-types.py | ||
| qapi-visit.py | ||
| qapi.py | ||
| qemu-binfmt-conf.sh | ||
| qemu-gdb.py | ||
| qtest.py | ||
| refresh-pxe-roms.sh | ||
| shaderinclude.pl | ||
| signrom.py | ||
| simpletrace.py | ||
| switch-timer-api | ||
| texi2pod.pl | ||
| tracetool.py | ||
| update-linux-headers.sh | ||
| vmstate-static-checker.py | ||