Based on qemu.git master. Pending prerequisites: + Not a strong dependency, but for qapi-tests to consistently pass, I needed a race fixed: https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg01827.html
Also available as a tag at this location: git fetch git://repo.or.cz/qemu/ericb.git qapi-cleanupv9e and will soon be part of my branch with the rest of the v5 series, at: http://repo.or.cz/qemu/ericb.git/shortlog/refs/heads/qapi v9 notes: Rebase to master, incorporate findings from Marc-André. 001/37:[----] [--] 'qobject: Document more shortcomings in our number handling' 002/37:[----] [--] 'qapi: Avoid use of misnamed DO_UPCAST()' 003/37:[----] [--] 'qapi: Drop dead dealloc visitor variable' 004/37:[----] [--] 'hmp: Improve use of qapi visitor' 005/37:[----] [--] 'vl: Improve use of qapi visitor' 006/37:[----] [--] 'balloon: Improve use of qapi visitor' 007/37:[0002] [FC] 'qapi: Improve generated event use of qapi visitor' 008/37:[----] [--] 'qapi: Track all failures between visit_start/stop' 009/37:[0005] [FC] 'qapi: Prefer type_int64 over type_int in visitors' 010/37:[0009] [FC] 'qapi: Make all visitors supply uint64 callbacks' 011/37:[----] [--] 'qapi: Consolidate visitor small integer callbacks' 012/37:[----] [--] 'qapi: Don't cast Enum* to int*' 013/37:[----] [--] 'qom: Use typedef for Visitor' 014/37:[0004] [FC] 'qapi: Swap visit_* arguments for consistent 'name' placement' 015/37:[----] [-C] 'qom: Swap 'name' next to visitor in ObjectPropertyAccessor' 016/37:[----] [--] 'qapi: Swap 'name' in visit_* callbacks to match public API' 017/37:[----] [--] 'qapi: Drop unused 'kind' for struct/enum visit' 018/37:[----] [--] 'qapi: Drop unused error argument for list and implicit struct' 019/37:[----] [--] 'qmp: Fix reference-counting of qnull on empty output visit' 020/37:[----] [--] 'qmp: Don't abuse stack to track qmp-output root' 021/37:[----] [--] 'qapi: Document visitor interfaces, add assertions' 022/37:[----] [--] 'qapi: Add visit_type_null() visitor' 023/37:[down] 'qmp: Support explicit null during input visit' 024/37:[0015] [FC] 'qmp: Tighten output visitor rules' 025/37:[----] [--] 'spapr_drc: Expose 'null' in qom-get when there is no fdt' 026/37:[----] [--] 'qapi: Simplify excess input reporting in input visitors' 027/37:[----] [--] 'qapi: Add type.is_empty() helper' 028/37:[----] [--] 'qapi: Fix command with named empty argument type' 029/37:[----] [--] 'qapi: Eliminate empty visit_type_FOO_fields' 030/37:[0013] [FC] 'qapi: Canonicalize missing object to :empty' 031/37:[----] [--] 'qapi-visit: Unify struct and union visit' 032/37:[----] [--] 'qapi: Rework deallocation of partial struct' 033/37:[0003] [FC] 'qapi: Split visit_end_struct() into pieces' 034/37:[----] [--] 'qapi: Simplify semantics of visit_next_list()' 035/37:[0006] [FC] 'qapi: Change visit_type_FOO() to no longer return partial objects' 036/37:[----] [--] 'RFC: qapi: Adjust layout of FooList types' 037/37:[down] 'qapi: Update docs to match recent generator changes' v8 notes: https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg03863.html Four new patches (13-16/35), plus rebasing on top of them, so that the code base now consistently passes a 'v, name' pair anywhere a visitor needs a name, rather than putting other arguments in between the pair. I got to have fun with Coccinelle Also fix a bug in my changes to visit_next_list() (v7 29/31), so that 'make check' and qemu-iotests now pass at all points in the series. The parameter ordering changes have the potential to be a rebase magnet, so I'm hoping this series can go in relatively soon after Markus returns from break. I made good on my threat in v7 of writing a qapi-to-JSON output visitor, but that will remain a separate series based on this one (the only posting of that series so far now needs rebasing: https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg01760.html) v7 notes: https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg01181.html v6 notes: https://lists.gnu.org/archive/html/qemu-devel/2015-11/msg05793.html v5 and earlier - look in the mail archives Eric Blake (37): qobject: Document more shortcomings in our number handling qapi: Avoid use of misnamed DO_UPCAST() qapi: Drop dead dealloc visitor variable hmp: Improve use of qapi visitor vl: Improve use of qapi visitor balloon: Improve use of qapi visitor qapi: Improve generated event use of qapi visitor qapi: Track all failures between visit_start/stop qapi: Prefer type_int64 over type_int in visitors qapi: Make all visitors supply uint64 callbacks qapi: Consolidate visitor small integer callbacks qapi: Don't cast Enum* to int* qom: Use typedef for Visitor qapi: Swap visit_* arguments for consistent 'name' placement qom: Swap 'name' next to visitor in ObjectPropertyAccessor qapi: Swap 'name' in visit_* callbacks to match public API qapi: Drop unused 'kind' for struct/enum visit qapi: Drop unused error argument for list and implicit struct qmp: Fix reference-counting of qnull on empty output visit qmp: Don't abuse stack to track qmp-output root qapi: Document visitor interfaces, add assertions qapi: Add visit_type_null() visitor qmp: Support explicit null during input visit qmp: Tighten output visitor rules spapr_drc: Expose 'null' in qom-get when there is no fdt qapi: Simplify excess input reporting in input visitors qapi: Add type.is_empty() helper qapi: Fix command with named empty argument type qapi: Eliminate empty visit_type_FOO_fields qapi: Canonicalize missing object to :empty qapi-visit: Unify struct and union visit qapi: Rework deallocation of partial struct qapi: Split visit_end_struct() into pieces qapi: Simplify semantics of visit_next_list() qapi: Change visit_type_FOO() to no longer return partial objects RFC: qapi: Adjust layout of FooList types qapi: Update docs to match recent generator changes backends/hostmem.c | 24 +-- block/qapi.c | 2 +- blockdev.c | 4 +- bootdevice.c | 12 +- docs/qapi-code-gen.txt | 130 +++++++----- hmp.c | 23 ++- hw/acpi/core.c | 4 +- hw/acpi/ich9.c | 49 ++--- hw/block/nvme.c | 12 +- hw/core/machine.c | 24 +-- hw/core/qdev-properties-system.c | 44 ++-- hw/core/qdev-properties.c | 180 ++++++++-------- hw/core/qdev.c | 7 +- hw/i386/pc.c | 43 ++-- hw/ide/qdev.c | 12 +- hw/intc/xics.c | 20 +- hw/isa/lpc_ich9.c | 7 +- hw/mem/pc-dimm.c | 6 +- hw/misc/edu.c | 6 +- hw/misc/tmp105.c | 12 +- hw/net/ne2000-isa.c | 14 +- hw/pci-host/piix.c | 18 +- hw/pci-host/q35.c | 23 +-- hw/ppc/spapr_drc.c | 43 ++-- hw/usb/dev-storage.c | 12 +- hw/virtio/virtio-balloon.c | 43 ++-- include/qapi/qmp-output-visitor.h | 1 + include/qapi/visitor-impl.h | 106 ++++++---- include/qapi/visitor.h | 298 ++++++++++++++++++++++++--- include/qom/object.h | 13 +- memory.c | 26 +-- net/dump.c | 12 +- net/filter-buffer.c | 14 +- net/net.c | 4 +- numa.c | 6 +- qapi/opts-visitor.c | 121 ++++++----- qapi/qapi-dealloc-visitor.c | 108 ++++------ qapi/qapi-visit-core.c | 352 +++++++++++++++++--------------- qapi/qmp-input-visitor.c | 188 ++++++++++------- qapi/qmp-output-visitor.c | 166 +++++++-------- qapi/string-input-visitor.c | 93 +++++---- qapi/string-output-visitor.c | 88 ++++---- qemu-img.c | 11 +- qobject/json-parser.c | 4 +- qobject/qjson.c | 8 +- qom/object.c | 129 ++++++------ replay/replay-input.c | 4 +- scripts/qapi-commands.py | 21 +- scripts/qapi-event.py | 22 +- scripts/qapi-types.py | 13 +- scripts/qapi-visit.py | 264 ++++++++++++------------ scripts/qapi.py | 37 ++-- target-i386/cpu.c | 96 ++++----- target-ppc/translate_init.c | 12 +- tests/qapi-schema/event-case.out | 2 +- tests/qapi-schema/flat-union-empty.out | 1 + tests/qapi-schema/ident-with-escape.out | 1 + tests/qapi-schema/indented-expr.out | 4 +- tests/qapi-schema/qapi-schema-test.json | 2 + tests/qapi-schema/qapi-schema-test.out | 47 ++++- tests/qapi-schema/union-clash-data.out | 2 + tests/qapi-schema/union-empty.out | 1 + tests/test-opts-visitor.c | 6 +- tests/test-qdev-global-props.c | 18 +- tests/test-qmp-commands.c | 20 +- tests/test-qmp-input-strict.c | 47 ++--- tests/test-qmp-input-visitor.c | 117 ++++++----- tests/test-qmp-output-visitor.c | 38 ++-- tests/test-string-input-visitor.c | 34 +-- tests/test-string-output-visitor.c | 16 +- tests/test-visitor-serialization.c | 54 ++--- util/qemu-sockets.c | 4 +- vl.c | 29 +-- 73 files changed, 1920 insertions(+), 1514 deletions(-) -- 2.5.0