diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2016-09-12 13:19:04 +0400 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2016-09-19 17:32:21 +0200 |
commit | c823501ea9bf7b13ca32226e1c628480edb034d6 (patch) | |
tree | 18d5450db5e2bac1101ea692847e22f638d5f77d | |
parent | b804dc3bcddce6d0cd58e3c66cb0ee5b282b9e14 (diff) |
monitor: use qmp_find_command() (using generated qapi code)
Stop using the so-called 'middle' mode. Instead, use qmp_find_command()
from generated qapi commands registry. Update and fix the documentation
too.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20160912091913.15831-10-marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | docs/writing-qmp-commands.txt | 8 | ||||
-rw-r--r-- | monitor.c | 14 | ||||
-rw-r--r-- | qmp-commands.hx | 146 | ||||
-rw-r--r-- | vl.c | 1 |
5 files changed, 11 insertions, 160 deletions
@@ -312,7 +312,7 @@ $(qapi-modules) $(SRC_PATH)/scripts/qapi-event.py $(qapi-py) qmp-commands.h qmp-marshal.c :\ $(qapi-modules) $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py) $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \ - $(gen-out-type) -o "." -m $<, \ + $(gen-out-type) -o "." $<, \ " GEN $@") qmp-introspect.h qmp-introspect.c :\ $(qapi-modules) $(SRC_PATH)/scripts/qapi-introspect.py $(qapi-py) diff --git a/docs/writing-qmp-commands.txt b/docs/writing-qmp-commands.txt index 59aa77ae25..0a66e0ebb8 100644 --- a/docs/writing-qmp-commands.txt +++ b/docs/writing-qmp-commands.txt @@ -127,7 +127,6 @@ following at the bottom: { .name = "hello-world", .args_type = "", - .mhandler.cmd_new = qmp_marshal_hello_world, }, You're done. Now build qemu, run it as suggested in the "Testing" section, @@ -179,7 +178,6 @@ The last step is to update the qmp-commands.hx file: { .name = "hello-world", .args_type = "message:s?", - .mhandler.cmd_new = qmp_marshal_hello_world, }, Notice that the "args_type" member got our "message" argument. The character @@ -454,12 +452,11 @@ There are a number of things to be noticed: 6. You have to include the "qmp-commands.h" header file in qemu-timer.c, otherwise qemu won't build -The last step is to add the correspoding entry in the qmp-commands.hx file: +The last step is to add the corresponding entry in the qmp-commands.hx file: { .name = "query-alarm-clock", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_alarm_clock, }, Time to test the new command. Build qemu, run it as described in the "Testing" @@ -518,7 +515,7 @@ in the monitor.c file. The entry for the "info alarmclock" follows: .args_type = "", .params = "", .help = "show information about the alarm clock", - .mhandler.info = hmp_info_alarm_clock, + .mhandler.cmd = hmp_info_alarm_clock, }, To test this, run qemu and type "info alarmclock" in the user monitor. @@ -605,7 +602,6 @@ To test this you have to add the corresponding qmp-commands.hx entry: { .name = "query-alarm-methods", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_alarm_methods, }, Now Build qemu, run it as explained in the "Testing" section and try our new @@ -1009,10 +1009,6 @@ static void qmp_query_qmp_schema(QDict *qdict, QObject **ret_data, } /* - * Note: right now, this function is never called. It will be called - * shortly when we stop using QAPI 'middle mode'. The rest of this - * comment is written as if that was the case already. - * * We used to define commands in qmp-commands.hx in addition to the * QAPI schema. This permitted defining some of them only in certain * configurations. query-commands has always reflected that (good, @@ -3976,6 +3972,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens) QObject *obj, *data; QDict *input, *args; const mon_cmd_t *cmd; + QmpCommand *qcmd; const char *cmd_name; Monitor *mon = cur_mon; @@ -4001,7 +3998,8 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens) cmd_name = qdict_get_str(input, "execute"); trace_handle_qmp_command(mon, cmd_name); cmd = qmp_find_cmd(cmd_name); - if (!cmd) { + qcmd = qmp_find_command(cmd_name); + if (!qcmd || !cmd) { error_set(&local_err, ERROR_CLASS_COMMAND_NOT_FOUND, "The command %s has not been found", cmd_name); goto err_out; @@ -4023,7 +4021,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens) goto err_out; } - cmd->mhandler.cmd_new(args, &data, &local_err); + qcmd->fn(args, &data, &local_err); err_out: monitor_protocol_emitter(mon, data, local_err); @@ -4095,7 +4093,9 @@ static QObject *get_qmp_greeting(void) QObject *ver = NULL; qmp_marshal_query_version(NULL, &ver, NULL); - return qobject_from_jsonf("{'QMP':{'version': %p,'capabilities': []}}",ver); + + return qobject_from_jsonf("{'QMP': {'version': %p, 'capabilities': []}}", + ver); } static void monitor_qmp_event(void *opaque, int event) diff --git a/qmp-commands.hx b/qmp-commands.hx index 8a135506dc..734f3d7342 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -63,7 +63,6 @@ EQMP { .name = "quit", .args_type = "", - .mhandler.cmd_new = qmp_marshal_quit, }, SQMP @@ -84,7 +83,6 @@ EQMP { .name = "eject", .args_type = "force:-f,device:B", - .mhandler.cmd_new = qmp_marshal_eject, }, SQMP @@ -110,7 +108,6 @@ EQMP { .name = "change", .args_type = "device:B,target:F,arg:s?", - .mhandler.cmd_new = qmp_marshal_change, }, SQMP @@ -146,7 +143,6 @@ EQMP { .name = "screendump", .args_type = "filename:F", - .mhandler.cmd_new = qmp_marshal_screendump, }, SQMP @@ -169,7 +165,6 @@ EQMP { .name = "stop", .args_type = "", - .mhandler.cmd_new = qmp_marshal_stop, }, SQMP @@ -190,7 +185,6 @@ EQMP { .name = "cont", .args_type = "", - .mhandler.cmd_new = qmp_marshal_cont, }, SQMP @@ -211,7 +205,6 @@ EQMP { .name = "system_wakeup", .args_type = "", - .mhandler.cmd_new = qmp_marshal_system_wakeup, }, SQMP @@ -232,7 +225,6 @@ EQMP { .name = "system_reset", .args_type = "", - .mhandler.cmd_new = qmp_marshal_system_reset, }, SQMP @@ -253,7 +245,6 @@ EQMP { .name = "system_powerdown", .args_type = "", - .mhandler.cmd_new = qmp_marshal_system_powerdown, }, SQMP @@ -276,7 +267,6 @@ EQMP .args_type = "device:O", .params = "driver[,prop=value][,...]", .help = "add device, like -device on the command line", - .mhandler.cmd_new = qmp_device_add, }, SQMP @@ -310,7 +300,6 @@ EQMP { .name = "device_del", .args_type = "id:s", - .mhandler.cmd_new = qmp_marshal_device_del, }, SQMP @@ -338,7 +327,6 @@ EQMP { .name = "send-key", .args_type = "keys:q,hold-time:i?", - .mhandler.cmd_new = qmp_marshal_send_key, }, SQMP @@ -369,7 +357,6 @@ EQMP { .name = "cpu", .args_type = "index:i", - .mhandler.cmd_new = qmp_marshal_cpu, }, SQMP @@ -394,7 +381,6 @@ EQMP { .name = "cpu-add", .args_type = "id:i", - .mhandler.cmd_new = qmp_marshal_cpu_add, }, SQMP @@ -417,7 +403,6 @@ EQMP { .name = "memsave", .args_type = "val:l,size:i,filename:s,cpu:i?", - .mhandler.cmd_new = qmp_marshal_memsave, }, SQMP @@ -446,7 +431,6 @@ EQMP { .name = "pmemsave", .args_type = "val:l,size:i,filename:s", - .mhandler.cmd_new = qmp_marshal_pmemsave, }, SQMP @@ -474,7 +458,6 @@ EQMP { .name = "inject-nmi", .args_type = "", - .mhandler.cmd_new = qmp_marshal_inject_nmi, }, SQMP @@ -497,7 +480,6 @@ EQMP { .name = "ringbuf-write", .args_type = "device:s,data:s,format:s?", - .mhandler.cmd_new = qmp_marshal_ringbuf_write, }, SQMP @@ -526,7 +508,6 @@ EQMP { .name = "ringbuf-read", .args_type = "device:s,size:i,format:s?", - .mhandler.cmd_new = qmp_marshal_ringbuf_read, }, SQMP @@ -562,7 +543,6 @@ EQMP { .name = "xen-save-devices-state", .args_type = "filename:F", - .mhandler.cmd_new = qmp_marshal_xen_save_devices_state, }, SQMP @@ -589,7 +569,6 @@ EQMP { .name = "xen-load-devices-state", .args_type = "filename:F", - .mhandler.cmd_new = qmp_marshal_xen_load_devices_state, }, SQMP @@ -616,7 +595,6 @@ EQMP { .name = "xen-set-global-dirty-log", .args_type = "enable:b", - .mhandler.cmd_new = qmp_marshal_xen_set_global_dirty_log, }, SQMP @@ -640,7 +618,6 @@ EQMP { .name = "migrate", .args_type = "detach:-d,blk:-b,inc:-i,uri:s", - .mhandler.cmd_new = qmp_marshal_migrate, }, SQMP @@ -673,7 +650,6 @@ EQMP { .name = "migrate_cancel", .args_type = "", - .mhandler.cmd_new = qmp_marshal_migrate_cancel, }, SQMP @@ -694,7 +670,6 @@ EQMP { .name = "migrate-incoming", .args_type = "uri:s", - .mhandler.cmd_new = qmp_marshal_migrate_incoming, }, SQMP @@ -722,7 +697,6 @@ EQMP { .name = "migrate-set-cache-size", .args_type = "value:o", - .mhandler.cmd_new = qmp_marshal_migrate_set_cache_size, }, SQMP @@ -745,7 +719,6 @@ EQMP { .name = "migrate-start-postcopy", .args_type = "", - .mhandler.cmd_new = qmp_marshal_migrate_start_postcopy, }, SQMP @@ -764,7 +737,6 @@ EQMP { .name = "query-migrate-cache-size", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_migrate_cache_size, }, SQMP @@ -786,7 +758,6 @@ EQMP { .name = "migrate_set_speed", .args_type = "value:o", - .mhandler.cmd_new = qmp_marshal_migrate_set_speed, }, SQMP @@ -809,7 +780,6 @@ EQMP { .name = "migrate_set_downtime", .args_type = "value:T", - .mhandler.cmd_new = qmp_marshal_migrate_set_downtime, }, SQMP @@ -834,7 +804,6 @@ EQMP .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?", .params = "protocol hostname port tls-port cert-subject", .help = "set migration information for remote display", - .mhandler.cmd_new = qmp_marshal_client_migrate_info, }, SQMP @@ -868,7 +837,6 @@ EQMP .args_type = "paging:b,protocol:s,detach:b?,begin:i?,end:i?,format:s?", .params = "-p protocol [-d] [begin] [length] [format]", .help = "dump guest memory to file", - .mhandler.cmd_new = qmp_marshal_dump_guest_memory, }, SQMP @@ -907,7 +875,6 @@ EQMP { .name = "query-dump-guest-memory-capability", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_dump_guest_memory_capability, }, SQMP @@ -929,7 +896,6 @@ EQMP .args_type = "", .params = "", .help = "query background dump status", - .mhandler.cmd_new = qmp_marshal_query_dump, }, SQMP @@ -952,7 +918,6 @@ EQMP { .name = "dump-skeys", .args_type = "filename:F", - .mhandler.cmd_new = qmp_marshal_dump_skeys, }, #endif @@ -976,7 +941,6 @@ EQMP { .name = "netdev_add", .args_type = "netdev:O", - .mhandler.cmd_new = qmp_netdev_add, }, SQMP @@ -1007,7 +971,6 @@ EQMP { .name = "netdev_del", .args_type = "id:s", - .mhandler.cmd_new = qmp_marshal_netdev_del, }, SQMP @@ -1031,7 +994,6 @@ EQMP { .name = "object-add", .args_type = "qom-type:s,id:s,props:q?", - .mhandler.cmd_new = qmp_marshal_object_add, }, SQMP @@ -1057,7 +1019,6 @@ EQMP { .name = "object-del", .args_type = "id:s", - .mhandler.cmd_new = qmp_marshal_object_del, }, SQMP @@ -1082,7 +1043,6 @@ EQMP { .name = "block_resize", .args_type = "device:s?,node-name:s?,size:o", - .mhandler.cmd_new = qmp_marshal_block_resize, }, SQMP @@ -1107,7 +1067,6 @@ EQMP { .name = "block-stream", .args_type = "job-id:s?,device:B,base:s?,speed:o?,backing-file:s?,on-error:s?", - .mhandler.cmd_new = qmp_marshal_block_stream, }, SQMP @@ -1152,7 +1111,6 @@ EQMP { .name = "block-commit", .args_type = "job-id:s?,device:B,base:s?,top:s?,backing-file:s?,speed:o?", - .mhandler.cmd_new = qmp_marshal_block_commit, }, SQMP @@ -1219,7 +1177,6 @@ EQMP .args_type = "job-id:s?,sync:s,device:B,target:s,speed:i?,mode:s?," "format:s?,bitmap:s?,compress:b?," "on-source-error:s?,on-target-error:s?", - .mhandler.cmd_new = qmp_marshal_drive_backup, }, SQMP @@ -1277,7 +1234,6 @@ EQMP .name = "blockdev-backup", .args_type = "job-id:s?,sync:s,device:B,target:B,speed:i?,compress:b?," "on-source-error:s?,on-target-error:s?", - .mhandler.cmd_new = qmp_marshal_blockdev_backup, }, SQMP @@ -1321,33 +1277,27 @@ EQMP { .name = "block-job-set-speed", .args_type = "device:B,speed:o", - .mhandler.cmd_new = qmp_marshal_block_job_set_speed, }, { .name = "block-job-cancel", .args_type = "device:B,force:b?", - .mhandler.cmd_new = qmp_marshal_block_job_cancel, }, { .name = "block-job-pause", .args_type = "device:B", - .mhandler.cmd_new = qmp_marshal_block_job_pause, }, { .name = "block-job-resume", .args_type = "device:B", - .mhandler.cmd_new = qmp_marshal_block_job_resume, }, { .name = "block-job-complete", .args_type = "device:B", - .mhandler.cmd_new = qmp_marshal_block_job_complete, }, { .name = "transaction", .args_type = "actions:q,properties:q?", - .mhandler.cmd_new = qmp_marshal_transaction, }, SQMP @@ -1442,7 +1392,6 @@ EQMP { .name = "block-dirty-bitmap-add", .args_type = "node:B,name:s,granularity:i?", - .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_add, }, SQMP @@ -1470,7 +1419,6 @@ EQMP { .name = "block-dirty-bitmap-remove", .args_type = "node:B,name:s", - .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_remove, }, SQMP @@ -1498,7 +1446,6 @@ EQMP { .name = "block-dirty-bitmap-clear", .args_type = "node:B,name:s", - .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_clear, }, SQMP @@ -1527,7 +1474,6 @@ EQMP { .name = "blockdev-snapshot-sync", .args_type = "device:s?,node-name:s?,snapshot-file:s,snapshot-node-name:s?,format:s?,mode:s?", - .mhandler.cmd_new = qmp_marshal_blockdev_snapshot_sync, }, SQMP @@ -1563,7 +1509,6 @@ EQMP { .name = "blockdev-snapshot", .args_type = "node:s,overlay:s", - .mhandler.cmd_new = qmp_marshal_blockdev_snapshot, }, SQMP @@ -1601,7 +1546,6 @@ EQMP { .name = "blockdev-snapshot-internal-sync", .args_type = "device:B,name:s", - .mhandler.cmd_new = qmp_marshal_blockdev_snapshot_internal_sync, }, SQMP @@ -1631,8 +1575,6 @@ EQMP { .name = "blockdev-snapshot-delete-internal-sync", .args_type = "device:B,id:s?,name:s?", - .mhandler.cmd_new = - qmp_marshal_blockdev_snapshot_delete_internal_sync, }, SQMP @@ -1676,7 +1618,6 @@ EQMP "on-source-error:s?,on-target-error:s?," "unmap:b?," "granularity:i?,buf-size:i?", - .mhandler.cmd_new = qmp_marshal_drive_mirror, }, SQMP @@ -1741,7 +1682,6 @@ EQMP .args_type = "job-id:s?,sync:s,device:B,target:B,replaces:s?,speed:i?," "on-source-error:s?,on-target-error:s?," "granularity:i?,buf-size:i?", - .mhandler.cmd_new = qmp_marshal_blockdev_mirror, }, SQMP @@ -1790,7 +1730,6 @@ EQMP { .name = "change-backing-file", .args_type = "device:s,image-node-name:s,backing-file:s", - .mhandler.cmd_new = qmp_marshal_change_backing_file, }, SQMP @@ -1830,7 +1769,6 @@ EQMP { .name = "balloon", .args_type = "value:M", - .mhandler.cmd_new = qmp_marshal_balloon, }, SQMP @@ -1853,7 +1791,6 @@ EQMP { .name = "set_link", .args_type = "name:s,up:b", - .mhandler.cmd_new = qmp_marshal_set_link, }, SQMP @@ -1879,7 +1816,6 @@ EQMP .args_type = "fdname:s", .params = "getfd name", .help = "receive a file descriptor via SCM rights and assign it a name", - .mhandler.cmd_new = qmp_marshal_getfd, }, SQMP @@ -1912,7 +1848,6 @@ EQMP .args_type = "fdname:s", .params = "closefd name", .help = "close a file descriptor previously passed via SCM rights", - .mhandler.cmd_new = qmp_marshal_closefd, }, SQMP @@ -1937,7 +1872,6 @@ EQMP .args_type = "fdset-id:i?,opaque:s?", .params = "add-fd fdset-id opaque", .help = "Add a file descriptor, that was passed via SCM rights, to an fd set", - .mhandler.cmd_new = qmp_marshal_add_fd, }, SQMP @@ -1976,7 +1910,6 @@ EQMP .args_type = "fdset-id:i,fd:i?", .params = "remove-fd fdset-id fd", .help = "Remove a file descriptor from an fd set", - .mhandler.cmd_new = qmp_marshal_remove_fd, }, SQMP @@ -2008,7 +1941,6 @@ EQMP .name = "query-fdsets", .args_type = "", .help = "Return information describing all fd sets", - .mhandler.cmd_new = qmp_marshal_query_fdsets, }, SQMP @@ -2057,7 +1989,6 @@ EQMP { .name = "block_passwd", .args_type = "device:s?,node-name:s?,password:s", - .mhandler.cmd_new = qmp_marshal_block_passwd, }, SQMP @@ -2083,7 +2014,6 @@ EQMP { .name = "block_set_io_throttle", .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l,bps_max:l?,bps_rd_max:l?,bps_wr_max:l?,iops_max:l?,iops_rd_max:l?,iops_wr_max:l?,bps_max_length:l?,bps_rd_max_length:l?,bps_wr_max_length:l?,iops_max_length:l?,iops_rd_max_length:l?,iops_wr_max_length:l?,iops_size:l?,group:s?", - .mhandler.cmd_new = qmp_marshal_block_set_io_throttle, }, SQMP @@ -2140,7 +2070,6 @@ EQMP { .name = "set_password", .args_type = "protocol:s,password:s,connected:s?", - .mhandler.cmd_new = qmp_marshal_set_password, }, SQMP @@ -2166,7 +2095,6 @@ EQMP { .name = "expire_password", .args_type = "protocol:s,time:s", - .mhandler.cmd_new = qmp_marshal_expire_password, }, SQMP @@ -2191,7 +2119,6 @@ EQMP { .name = "add_client", .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?", - .mhandler.cmd_new = qmp_marshal_add_client, }, SQMP @@ -2219,7 +2146,6 @@ EQMP .args_type = "", .params = "", .help = "enable QMP capabilities", - .mhandler.cmd_new = qmp_marshal_qmp_capabilities, }, SQMP @@ -2242,7 +2168,6 @@ EQMP { .name = "human-monitor-command", .args_type = "command-line:s,cpu-index:i?", - .mhandler.cmd_new = qmp_marshal_human_monitor_command, }, SQMP @@ -2321,7 +2246,6 @@ EQMP { .name = "query-version", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_version, }, SQMP @@ -2358,7 +2282,6 @@ EQMP { .name = "query-commands", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_commands, }, SQMP @@ -2395,7 +2318,6 @@ EQMP { .name = "query-events", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_events, }, SQMP @@ -2412,7 +2334,6 @@ EQMP { .name = "query-qmp-schema", .args_type = "", - .mhandler.cmd_new = qmp_query_qmp_schema, }, SQMP @@ -2457,7 +2378,6 @@ EQMP { .name = "query-chardev", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_chardev, }, SQMP @@ -2498,7 +2418,6 @@ EQMP { .name = "query-chardev-backends", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_chardev_backends, }, SQMP @@ -2682,7 +2601,6 @@ EQMP { .name = "query-block", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_block, }, SQMP @@ -2879,7 +2797,6 @@ EQMP { .name = "query-blockstats", .args_type = "query-nodes:b?", - .mhandler.cmd_new = qmp_marshal_query_blockstats, }, SQMP @@ -2934,7 +2851,6 @@ EQMP { .name = "query-cpus", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_cpus, }, SQMP @@ -2973,7 +2889,6 @@ EQMP { .name = "query-iothreads", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_iothreads, }, SQMP @@ -3190,7 +3105,6 @@ EQMP { .name = "query-pci", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_pci, }, SQMP @@ -3214,7 +3128,6 @@ EQMP { .name = "query-kvm", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_kvm, }, SQMP @@ -3254,7 +3167,6 @@ EQMP { .name = "query-status", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_status, }, SQMP @@ -3298,7 +3210,6 @@ EQMP { .name = "query-mice", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_mice, }, SQMP @@ -3361,12 +3272,10 @@ EQMP { .name = "query-vnc", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_vnc, }, { .name = "query-vnc-servers", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_vnc_servers, }, SQMP @@ -3443,7 +3352,6 @@ EQMP { .name = "query-spice", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_spice, }, #endif @@ -3467,7 +3375,6 @@ EQMP { .name = "query-name", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_name, }, SQMP @@ -3490,7 +3397,6 @@ EQMP { .name = "query-uuid", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_uuid, }, SQMP @@ -3539,7 +3445,6 @@ EQMP { .name = "query-command-line-options", .args_type = "option:s?", - .mhandler.cmd_new = qmp_marshal_query_command_line_options, }, SQMP @@ -3717,7 +3622,6 @@ EQMP { .name = "query-migrate", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_migrate, }, SQMP @@ -3747,7 +3651,6 @@ EQMP .name = "migrate-set-capabilities", .args_type = "capabilities:q", .params = "capability:s,state:b", - .mhandler.cmd_new = qmp_marshal_migrate_set_capabilities, }, SQMP query-migrate-capabilities @@ -3784,7 +3687,6 @@ EQMP { .name = "query-migrate-capabilities", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_migrate_capabilities, }, SQMP @@ -3814,7 +3716,6 @@ EQMP .name = "migrate-set-parameters", .args_type = "compress-level:i?,compress-threads:i?,decompress-threads:i?,cpu-throttle-initial:i?,cpu-throttle-increment:i?", - .mhandler.cmd_new = qmp_marshal_migrate_set_parameters, }, SQMP query-migrate-parameters @@ -3851,7 +3752,6 @@ EQMP { .name = "query-migrate-parameters", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_migrate_parameters, }, SQMP @@ -3879,106 +3779,88 @@ EQMP { .name = "query-balloon", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_balloon, }, { .name = "query-block-jobs", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_block_jobs, }, { .name = "qom-list", .args_type = "path:s", - .mhandler.cmd_new = qmp_marshal_qom_list, }, { .name = "qom-set", .args_type = "path:s,property:s,value:q", - .mhandler.cmd_new = qmp_marshal_qom_set, }, { .name = "qom-get", .args_type = "path:s,property:s", - .mhandler.cmd_new = qmp_marshal_qom_get, }, { .name = "nbd-server-start", .args_type = "addr:q,tls-creds:s?", - .mhandler.cmd_new = qmp_marshal_nbd_server_start, }, { .name = "nbd-server-add", .args_type = "device:B,writable:b?", - .mhandler.cmd_new = qmp_marshal_nbd_server_add, }, { .name = "nbd-server-stop", .args_type = "", - .mhandler.cmd_new = qmp_marshal_nbd_server_stop, }, { .name = "change-vnc-password", .args_type = "password:s", - .mhandler.cmd_new = qmp_marshal_change_vnc_password, }, { .name = "qom-list-types", .args_type = "implements:s?,abstract:b?", - .mhandler.cmd_new = qmp_marshal_qom_list_types, }, { .name = "device-list-properties", .args_type = "typename:s", - .mhandler.cmd_new = qmp_marshal_device_list_properties, }, { .name = "query-machines", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_machines, }, { .name = "query-cpu-definitions", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_cpu_definitions, }, { .name = "query-cpu-model-expansion", .args_type = "type:s,model:q", - .mhandler.cmd_new = qmp_marshal_query_cpu_model_expansion, }, { .name = "query-cpu-model-comparison", .args_type = "modela:q,modelb:q", - .mhandler.cmd_new = qmp_marshal_query_cpu_model_comparison, }, { .name = "query-cpu-model-baseline", .args_type = "modela:q,modelb:q", - .mhandler.cmd_new = qmp_marshal_query_cpu_model_baseline, }, { .name = "query-target", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_target, }, { .name = "query-tpm", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_tpm, }, SQMP @@ -4012,7 +3894,6 @@ EQMP { .name = "query-tpm-models", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_tpm_models, }, SQMP @@ -4033,7 +3914,6 @@ EQMP { .name = "query-tpm-types", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_tpm_types, }, SQMP @@ -4054,7 +3934,6 @@ EQMP { .name = "chardev-add", .args_type = "id:s,backend:q", - .mhandler.cmd_new = qmp_marshal_chardev_add, }, SQMP @@ -4091,7 +3970,6 @@ EQMP { .name = "chardev-remove", .args_type = "id:s", - .mhandler.cmd_new = qmp_marshal_chardev_remove, }, @@ -4114,7 +3992,6 @@ EQMP { .name = "query-rx-filter", .args_type = "name:s?", - .mhandler.cmd_new = qmp_marshal_query_rx_filter, }, SQMP @@ -4180,7 +4057,6 @@ EQMP { .name = "blockdev-add", .args_type = "options:q", - .mhandler.cmd_new = qmp_marshal_blockdev_add, }, SQMP @@ -4239,7 +4115,6 @@ EQMP { .name = "x-blockdev-del", .args_type = "id:s?,node-name:s?", - .mhandler.cmd_new = qmp_marshal_x_blockdev_del, }, SQMP @@ -4296,7 +4171,6 @@ EQMP { .name = "blockdev-open-tray", .args_type = "device:s,force:b?", - .mhandler.cmd_new = qmp_marshal_blockdev_open_tray, }, SQMP @@ -4344,7 +4218,6 @@ EQMP { .name = "blockdev-close-tray", .args_type = "device:s", - .mhandler.cmd_new = qmp_marshal_blockdev_close_tray, }, SQMP @@ -4379,7 +4252,6 @@ EQMP { .name = "x-blockdev-remove-medium", .args_type = "device:s", - .mhandler.cmd_new = qmp_marshal_x_blockdev_remove_medium, }, SQMP @@ -4427,7 +4299,6 @@ EQMP { .name = "x-blockdev-insert-medium", .args_type = "device:s,node-name:s", - .mhandler.cmd_new = qmp_marshal_x_blockdev_insert_medium, }, SQMP @@ -4467,7 +4338,6 @@ EQMP { .name = "x-blockdev-change", .args_type = "parent:B,child:B?,node:B?", - .mhandler.cmd_new = qmp_marshal_x_blockdev_change, }, SQMP @@ -4520,7 +4390,6 @@ EQMP { .name = "query-named-block-nodes", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_named_block_nodes, }, SQMP @@ -4582,7 +4451,6 @@ EQMP { .name = "blockdev-change-medium", .args_type = "device:B,filename:F,format:s?,read-only-mode:s?", - .mhandler.cmd_new = qmp_marshal_blockdev_change_medium, }, SQMP @@ -4635,7 +4503,6 @@ EQMP { .name = "query-memdev", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_memdev, }, SQMP @@ -4673,7 +4540,6 @@ EQMP { .name = "query-memory-devices", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_memory_devices, }, SQMP @@ -4700,7 +4566,6 @@ EQMP { .name = "query-acpi-ospm-status", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_acpi_ospm_status, }, SQMP @@ -4723,7 +4588,6 @@ EQMP { .name = "rtc-reset-reinjection", .args_type = "", - .mhandler.cmd_new = qmp_marshal_rtc_reset_reinjection, }, #endif @@ -4744,7 +4608,6 @@ EQMP { .name = "trace-event-get-state", .args_type = "name:s,vcpu:i?", - .mhandler.cmd_new = qmp_marshal_trace_event_get_state, }, SQMP @@ -4776,7 +4639,6 @@ EQMP { .name = "trace-event-set-state", .args_type = "name:s,enable:b,ignore-unavailable:b?,vcpu:i?", - .mhandler.cmd_new = qmp_marshal_trace_event_set_state, }, SQMP @@ -4811,7 +4673,6 @@ EQMP { .name = "input-send-event", .args_type = "console:i?,events:q", - .mhandler.cmd_new = qmp_marshal_input_send_event, }, SQMP @@ -4875,7 +4736,6 @@ EQMP { .name = "block-set-write-threshold", .args_type = "node-name:s,write-threshold:l", - .mhandler.cmd_new = qmp_marshal_block_set_write_threshold, }, SQMP @@ -4903,7 +4763,6 @@ EQMP { .name = "query-rocker", .args_type = "name:s", - .mhandler.cmd_new = qmp_marshal_query_rocker, }, SQMP @@ -4924,7 +4783,6 @@ EQMP { .name = "query-rocker-ports", .args_type = "name:s", - .mhandler.cmd_new = qmp_marshal_query_rocker_ports, }, SQMP @@ -4949,7 +4807,6 @@ EQMP { .name = "query-rocker-of-dpa-flows", .args_type = "name:s,tbl-id:i?", - .mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_flows, }, SQMP @@ -4978,7 +4835,6 @@ EQMP { .name = "query-rocker-of-dpa-groups", .args_type = "name:s,type:i?", - .mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_groups, }, SQMP @@ -5009,7 +4865,6 @@ EQMP { .name = "query-gic-capabilities", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_gic_capabilities, }, #endif @@ -5033,7 +4888,6 @@ EQMP { .name = "query-hotpluggable-cpus", .args_type = "", - .mhandler.cmd_new = qmp_marshal_query_hotpluggable_cpus, }, SQMP @@ -2987,6 +2987,7 @@ int main(int argc, char **argv, char **envp) qemu_init_exec_dir(argv[0]); module_call_init(MODULE_INIT_QOM); + module_call_init(MODULE_INIT_QAPI); qemu_add_opts(&qemu_drive_opts); qemu_add_drive_opts(&qemu_legacy_drive_opts); |