qemu-e2k/tests
Eric Blake 32bafa8fdd qapi: Don't special-case simple union wrappers
Simple unions were carrying a special case that hid their 'data'
QMP member from the resulting C struct, via the hack method
QAPISchemaObjectTypeVariant.simple_union_type().  But by using
the work we started by unboxing flat union and alternate
branches, coupled with the ability to visit the members of an
implicit type, we can now expose the simple union's implicit
type in qapi-types.h:

| struct q_obj_ImageInfoSpecificQCow2_wrapper {
|     ImageInfoSpecificQCow2 *data;
| };
|
| struct q_obj_ImageInfoSpecificVmdk_wrapper {
|     ImageInfoSpecificVmdk *data;
| };
...
| struct ImageInfoSpecific {
|     ImageInfoSpecificKind type;
|     union { /* union tag is @type */
|         void *data;
|-        ImageInfoSpecificQCow2 *qcow2;
|-        ImageInfoSpecificVmdk *vmdk;
|+        q_obj_ImageInfoSpecificQCow2_wrapper qcow2;
|+        q_obj_ImageInfoSpecificVmdk_wrapper vmdk;
|     } u;
| };

Doing this removes asymmetry between QAPI's QMP side and its
C side (both sides now expose 'data'), and means that the
treatment of a simple union as sugar for a flat union is now
equivalent in both languages (previously the two approaches used
a different layer of dereferencing, where the simple union could
be converted to a flat union with equivalent C layout but
different {} on the wire, or to an equivalent QMP wire form
but with different C representation).  Using the implicit type
also lets us get rid of the simple_union_type() hack.

Of course, now all clients of simple unions have to adjust from
using su->u.member to using su->u.member.data; while this touches
a number of files in the tree, some earlier cleanup patches
helped minimize the change to the initialization of a temporary
variable rather than every single member access.  The generated
qapi-visit.c code is also affected by the layout change:

|@@ -7393,10 +7393,10 @@ void visit_type_ImageInfoSpecific_member
|     }
|     switch (obj->type) {
|     case IMAGE_INFO_SPECIFIC_KIND_QCOW2:
|-        visit_type_ImageInfoSpecificQCow2(v, "data", &obj->u.qcow2, &err);
|+        visit_type_q_obj_ImageInfoSpecificQCow2_wrapper_members(v, &obj->u.qcow2, &err);
|         break;
|     case IMAGE_INFO_SPECIFIC_KIND_VMDK:
|-        visit_type_ImageInfoSpecificVmdk(v, "data", &obj->u.vmdk, &err);
|+        visit_type_q_obj_ImageInfoSpecificVmdk_wrapper_members(v, &obj->u.vmdk, &err);
|         break;
|     default:
|         abort();

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1458254921-17042-13-git-send-email-eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2016-03-18 10:29:26 +01:00
..
acpi-test-data acpi-test: update UID for GSI links 2016-03-15 23:25:52 +02:00
guest-debug tests/guest-debug: introduce basic gdbstub tests 2015-12-17 13:37:15 +00:00
image-fuzzer tests: Use Python 2.6 "except E as ..." syntax 2016-02-08 17:29:54 +01:00
libqos all: Clean up includes 2016-02-23 12:43:05 +00:00
multiboot tests/multiboot: Add test for modules 2015-01-26 12:22:44 +01:00
qapi-schema qapi: Adjust names of implicit types 2016-03-18 10:29:25 +01:00
qemu-iotests iotests: Test QUORUM_REPORT_BAD in fifo mode 2016-03-17 16:43:30 +01:00
rocker rocker: tests: don't need to specify master/self when setting vlans 2015-07-07 13:13:22 +01:00
tcg maint: remove unused include for signal.h 2015-09-11 10:21:38 +03:00
vmstate-static-checker-data tests: vmstate static checker: add size mismatch inside substructure 2014-06-23 19:14:52 +02:00
.gitignore crypto: add QCryptoSecret object class for password/key handling 2015-12-18 16:25:08 +00:00
Makefile qapi: Drop useless 'data' member of unions 2016-03-05 10:42:06 +01:00
ac97-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ahci-test.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
bios-tables-test.c vhost, virtio, pci, pxe 2016-02-19 10:50:37 +00:00
boot-order-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
boot-sector.c all: Clean up includes 2016-02-23 12:43:05 +00:00
boot-sector.h tests: add pxe e1000 and virtio-pci tests 2016-02-16 12:05:18 +02:00
check-block.sh qemu-iotests: make check-block.sh work on out-of-tree builds 2016-01-07 21:30:16 +01:00
check-qdict.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qfloat.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qint.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qjson.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qlist.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qom-interface.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qom-proplist.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
check-qstring.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
crypto-tls-x509-helpers.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
crypto-tls-x509-helpers.h crypto: add sanity checking of TLS x509 credentials 2015-09-15 15:05:09 +01:00
device-introspect-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
display-vga-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
drive_del-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ds1338-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
e1000-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
eepro100-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
endianness-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
es1370-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
fdc-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
fw_cfg-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
hd-geo-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
i440fx-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
i82801b11-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ide-test.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
intel-hda-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
io-channel-helpers.c io: assert errors before asserting content in I/O test 2016-03-10 17:10:18 +00:00
io-channel-helpers.h io: add QIOChannelSocket class 2015-12-18 12:18:31 +00:00
ioh3420-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ipmi-bt-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ipmi-kcs-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ipoctal232-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ivshmem-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
libqtest.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
libqtest.h all: Clean up includes 2016-02-23 12:43:05 +00:00
m48t59-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
ne2000-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
nvme-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pc-cpu-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pcnet-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pkix_asn1_tab.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pvpanic-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
pxe-test.c all: Clean up includes 2016-02-23 12:43:05 +00:00
q35-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
qemu-iotests-quick.sh qemu-iotests: Speed up make check-block 2015-01-13 11:47:55 +00:00
qom-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
rcutorture.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
rtc-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
rtl8139-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
spapr-phb-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
tco-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-aio.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-base64.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-bitops.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-blockjob-txn.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-coroutine.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-crypto-cipher.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-crypto-hash.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-crypto-secret.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-crypto-tlscredsx509.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-crypto-tlssession.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-cutils.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-hbitmap.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-int128.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-io-channel-buffer.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-io-channel-command.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-io-channel-file.c Merge I/O fixes 2016/02/16 v1 2016-02-16 15:47:35 +00:00
test-io-channel-socket.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
test-io-channel-tls.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-io-task.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-iov.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-mul64.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-netfilter.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-opts-visitor.c qapi-dealloc: Reduce use outside of generated code 2016-03-04 17:16:32 +01:00
test-qdev-global-props.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-qemu-opts.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-qga.c qga: Support enum names in guest-file-seek 2016-02-25 09:48:50 -06:00
test-qmp-commands.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
test-qmp-event.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-qmp-input-strict.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-qmp-input-visitor.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
test-qmp-output-visitor.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
test-rcu-list.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-rfifolock.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-string-input-visitor.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-string-output-visitor.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-thread-pool.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-throttle.c throttle: Test throttle_compute_wait() during bursts 2016-02-22 14:08:06 +01:00
test-timed-average.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-visitor-serialization.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-vmstate.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-write-threshold.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-x86-cpuid.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-xbzrle.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
tmp105-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
tpci200-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
usb-hcd-ehci-test.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
usb-hcd-ohci-test.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
usb-hcd-uhci-test.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
usb-hcd-xhci-test.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
vhost-user-bridge.c tests/vhost-user-bridge: fix build on 32 bit systems 2016-02-25 13:14:19 +02:00
vhost-user-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-9p-test.c 9pfs: Clean up includes 2016-01-29 15:07:23 +00:00
virtio-balloon-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-blk-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-console-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-net-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-rng-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-scsi-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
virtio-serial-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
vmxnet3-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
wdt_ib700-test.c tests: Clean up includes 2016-02-16 14:29:27 +00:00