Hi, Although some QMP commands are still not fully qapi'fied, it is possible to use more qapi common and generated code by dropping the 'middle' mode and use qmp_dispatch().
v5: - replace the dynamic unregister commands approach by a few preliminary patches to make the json schema #ifdef conditional and per-target - fix "check invalid arguments" patch based on Markus version - patch reordering v4: - export all marshaller functions (so we can keep calling them after middle mode is removed), remove 'export-marshal' patch - get rid of unnecessary lambda in python code (leftover), remove second mcgen(), and outdated comment - remove disabled commands at run-time to avoid any regression. It's now on my TODO list to fix qapi generator in 2.8 to have conditionals - move qmp-commands.txt to doc/ - split the last patch, remove trailing ws - add QEMU_VERSION_{MAJOR,MINOR,MICRO} patch, simplifying qmp_query_version() (could be applied outside this series) - update commit title/messages/order v3: - add a reference to docs/qmp-spec.txt in qmp_capabilities doc - remove 'props' from device_add doc, improve example - replace a g_strcmp0 with more appropriate g_str_equal - add 'export-marshal' command generator key patch - call qmp_marshal_query_version() directly (also get rid of the need to do a make clean, since the qapi json is modified) - add patch to check invalid arguments on no-args (the old dispatch code checks that), and a test - patch reordering to fix intermediate builds - commit messages improvements - split some misc doc fixes in last patch - add some r-b and rebase v2: - rebased on master - add Since: 0.13 to qmp_capabilities and device_add documentation - fix device_add doc - add missing spaces after ',' in get_qmp_greeting() - fix some grammar in monitor.c while touching it Marc-André Lureau (20): tests: do qmp introspect validation per target qapi.py: add a simple #ifdef conditional build-sys: make qemu qapi per-target build-sys: use config headers to generate qapi qapi: configure the schema build-sys: define QEMU_VERSION_{MAJOR,MINOR,MICRO} qapi-schema: use generated marshaller for 'qmp_capabilities' qapi-schema: add 'device_add' monitor: simplify invalid_qmp_mode() monitor: register gen:false commands manually qapi: export the marshallers monitor: use qmp_find_command() (using generated qapi code) monitor: implement 'qmp_query_commands' without qmp_cmds monitor: remove mhandler.cmd_new qapi: remove the "middle" mode qapi: check invalid arguments on no-args commands monitor: use qmp_dispatch() build-sys: remove qmp-commands-old.h qmp-commands.hx: fix some styling Replace qmp-commands.hx by doc/qmp-commands.txt hmp.c | 2 + monitor.c | 415 ++-------- qmp.c | 48 +- stubs/qapi-event.c | 74 ++ tests/qmp-introspect-test.c | 50 ++ tests/test-qmp-commands.c | 15 + tests/test-qmp-input-strict.c | 2 - vl.c | 1 + Makefile | 61 +- Makefile.objs | 7 +- Makefile.target | 32 +- scripts/create_config | 6 + scripts/qapi-commands.py | 81 +- scripts/qapi.py | 43 +- stubs/Makefile.objs | 1 + tests/Makefile.include | 2 + .gitignore | 1 - MAINTAINERS | 1 - docs/qapi-code-gen.txt | 6 +- qmp-commands.hx => docs/qmp-commands.txt | 1278 +----------------------------- docs/writing-qmp-commands.txt | 46 +- hmp-commands-info.hx | 120 +-- hmp-commands.hx | 208 ++--- qapi-schema.json | 91 +++ qapi.mak | 14 + qapi/event.json | 8 + trace-events | 1 - 27 files changed, 667 insertions(+), 1947 deletions(-) create mode 100644 stubs/qapi-event.c create mode 100644 tests/qmp-introspect-test.c rename qmp-commands.hx => docs/qmp-commands.txt (82%) create mode 100644 qapi.mak -- 2.9.0