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>
This commit is contained in:
Marc-André Lureau 2016-09-12 13:19:04 +04:00 committed by Markus Armbruster
parent b804dc3bcd
commit c823501ea9
5 changed files with 11 additions and 160 deletions

View File

@ -312,7 +312,7 @@ $(qapi-modules) $(SRC_PATH)/scripts/qapi-event.py $(qapi-py)
qmp-commands.h qmp-marshal.c :\ qmp-commands.h qmp-marshal.c :\
$(qapi-modules) $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py) $(qapi-modules) $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \ $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \
$(gen-out-type) -o "." -m $<, \ $(gen-out-type) -o "." $<, \
" GEN $@") " GEN $@")
qmp-introspect.h qmp-introspect.c :\ qmp-introspect.h qmp-introspect.c :\
$(qapi-modules) $(SRC_PATH)/scripts/qapi-introspect.py $(qapi-py) $(qapi-modules) $(SRC_PATH)/scripts/qapi-introspect.py $(qapi-py)

View File

@ -127,7 +127,6 @@ following at the bottom:
{ {
.name = "hello-world", .name = "hello-world",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_hello_world,
}, },
You're done. Now build qemu, run it as suggested in the "Testing" section, 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", .name = "hello-world",
.args_type = "message:s?", .args_type = "message:s?",
.mhandler.cmd_new = qmp_marshal_hello_world,
}, },
Notice that the "args_type" member got our "message" argument. The character 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, 6. You have to include the "qmp-commands.h" header file in qemu-timer.c,
otherwise qemu won't build 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", .name = "query-alarm-clock",
.args_type = "", .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" 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 = "", .args_type = "",
.params = "", .params = "",
.help = "show information about the alarm clock", .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. 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", .name = "query-alarm-methods",
.args_type = "", .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 Now Build qemu, run it as explained in the "Testing" section and try our new

View File

@ -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 * We used to define commands in qmp-commands.hx in addition to the
* QAPI schema. This permitted defining some of them only in certain * QAPI schema. This permitted defining some of them only in certain
* configurations. query-commands has always reflected that (good, * configurations. query-commands has always reflected that (good,
@ -3976,6 +3972,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
QObject *obj, *data; QObject *obj, *data;
QDict *input, *args; QDict *input, *args;
const mon_cmd_t *cmd; const mon_cmd_t *cmd;
QmpCommand *qcmd;
const char *cmd_name; const char *cmd_name;
Monitor *mon = cur_mon; Monitor *mon = cur_mon;
@ -4001,7 +3998,8 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
cmd_name = qdict_get_str(input, "execute"); cmd_name = qdict_get_str(input, "execute");
trace_handle_qmp_command(mon, cmd_name); trace_handle_qmp_command(mon, cmd_name);
cmd = qmp_find_cmd(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, error_set(&local_err, ERROR_CLASS_COMMAND_NOT_FOUND,
"The command %s has not been found", cmd_name); "The command %s has not been found", cmd_name);
goto err_out; goto err_out;
@ -4023,7 +4021,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
goto err_out; goto err_out;
} }
cmd->mhandler.cmd_new(args, &data, &local_err); qcmd->fn(args, &data, &local_err);
err_out: err_out:
monitor_protocol_emitter(mon, data, local_err); monitor_protocol_emitter(mon, data, local_err);
@ -4095,7 +4093,9 @@ static QObject *get_qmp_greeting(void)
QObject *ver = NULL; QObject *ver = NULL;
qmp_marshal_query_version(NULL, &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) static void monitor_qmp_event(void *opaque, int event)

View File

@ -63,7 +63,6 @@ EQMP
{ {
.name = "quit", .name = "quit",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_quit,
}, },
SQMP SQMP
@ -84,7 +83,6 @@ EQMP
{ {
.name = "eject", .name = "eject",
.args_type = "force:-f,device:B", .args_type = "force:-f,device:B",
.mhandler.cmd_new = qmp_marshal_eject,
}, },
SQMP SQMP
@ -110,7 +108,6 @@ EQMP
{ {
.name = "change", .name = "change",
.args_type = "device:B,target:F,arg:s?", .args_type = "device:B,target:F,arg:s?",
.mhandler.cmd_new = qmp_marshal_change,
}, },
SQMP SQMP
@ -146,7 +143,6 @@ EQMP
{ {
.name = "screendump", .name = "screendump",
.args_type = "filename:F", .args_type = "filename:F",
.mhandler.cmd_new = qmp_marshal_screendump,
}, },
SQMP SQMP
@ -169,7 +165,6 @@ EQMP
{ {
.name = "stop", .name = "stop",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_stop,
}, },
SQMP SQMP
@ -190,7 +185,6 @@ EQMP
{ {
.name = "cont", .name = "cont",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_cont,
}, },
SQMP SQMP
@ -211,7 +205,6 @@ EQMP
{ {
.name = "system_wakeup", .name = "system_wakeup",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_system_wakeup,
}, },
SQMP SQMP
@ -232,7 +225,6 @@ EQMP
{ {
.name = "system_reset", .name = "system_reset",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_system_reset,
}, },
SQMP SQMP
@ -253,7 +245,6 @@ EQMP
{ {
.name = "system_powerdown", .name = "system_powerdown",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_system_powerdown,
}, },
SQMP SQMP
@ -276,7 +267,6 @@ EQMP
.args_type = "device:O", .args_type = "device:O",
.params = "driver[,prop=value][,...]", .params = "driver[,prop=value][,...]",
.help = "add device, like -device on the command line", .help = "add device, like -device on the command line",
.mhandler.cmd_new = qmp_device_add,
}, },
SQMP SQMP
@ -310,7 +300,6 @@ EQMP
{ {
.name = "device_del", .name = "device_del",
.args_type = "id:s", .args_type = "id:s",
.mhandler.cmd_new = qmp_marshal_device_del,
}, },
SQMP SQMP
@ -338,7 +327,6 @@ EQMP
{ {
.name = "send-key", .name = "send-key",
.args_type = "keys:q,hold-time:i?", .args_type = "keys:q,hold-time:i?",
.mhandler.cmd_new = qmp_marshal_send_key,
}, },
SQMP SQMP
@ -369,7 +357,6 @@ EQMP
{ {
.name = "cpu", .name = "cpu",
.args_type = "index:i", .args_type = "index:i",
.mhandler.cmd_new = qmp_marshal_cpu,
}, },
SQMP SQMP
@ -394,7 +381,6 @@ EQMP
{ {
.name = "cpu-add", .name = "cpu-add",
.args_type = "id:i", .args_type = "id:i",
.mhandler.cmd_new = qmp_marshal_cpu_add,
}, },
SQMP SQMP
@ -417,7 +403,6 @@ EQMP
{ {
.name = "memsave", .name = "memsave",
.args_type = "val:l,size:i,filename:s,cpu:i?", .args_type = "val:l,size:i,filename:s,cpu:i?",
.mhandler.cmd_new = qmp_marshal_memsave,
}, },
SQMP SQMP
@ -446,7 +431,6 @@ EQMP
{ {
.name = "pmemsave", .name = "pmemsave",
.args_type = "val:l,size:i,filename:s", .args_type = "val:l,size:i,filename:s",
.mhandler.cmd_new = qmp_marshal_pmemsave,
}, },
SQMP SQMP
@ -474,7 +458,6 @@ EQMP
{ {
.name = "inject-nmi", .name = "inject-nmi",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_inject_nmi,
}, },
SQMP SQMP
@ -497,7 +480,6 @@ EQMP
{ {
.name = "ringbuf-write", .name = "ringbuf-write",
.args_type = "device:s,data:s,format:s?", .args_type = "device:s,data:s,format:s?",
.mhandler.cmd_new = qmp_marshal_ringbuf_write,
}, },
SQMP SQMP
@ -526,7 +508,6 @@ EQMP
{ {
.name = "ringbuf-read", .name = "ringbuf-read",
.args_type = "device:s,size:i,format:s?", .args_type = "device:s,size:i,format:s?",
.mhandler.cmd_new = qmp_marshal_ringbuf_read,
}, },
SQMP SQMP
@ -562,7 +543,6 @@ EQMP
{ {
.name = "xen-save-devices-state", .name = "xen-save-devices-state",
.args_type = "filename:F", .args_type = "filename:F",
.mhandler.cmd_new = qmp_marshal_xen_save_devices_state,
}, },
SQMP SQMP
@ -589,7 +569,6 @@ EQMP
{ {
.name = "xen-load-devices-state", .name = "xen-load-devices-state",
.args_type = "filename:F", .args_type = "filename:F",
.mhandler.cmd_new = qmp_marshal_xen_load_devices_state,
}, },
SQMP SQMP
@ -616,7 +595,6 @@ EQMP
{ {
.name = "xen-set-global-dirty-log", .name = "xen-set-global-dirty-log",
.args_type = "enable:b", .args_type = "enable:b",
.mhandler.cmd_new = qmp_marshal_xen_set_global_dirty_log,
}, },
SQMP SQMP
@ -640,7 +618,6 @@ EQMP
{ {
.name = "migrate", .name = "migrate",
.args_type = "detach:-d,blk:-b,inc:-i,uri:s", .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
.mhandler.cmd_new = qmp_marshal_migrate,
}, },
SQMP SQMP
@ -673,7 +650,6 @@ EQMP
{ {
.name = "migrate_cancel", .name = "migrate_cancel",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_migrate_cancel,
}, },
SQMP SQMP
@ -694,7 +670,6 @@ EQMP
{ {
.name = "migrate-incoming", .name = "migrate-incoming",
.args_type = "uri:s", .args_type = "uri:s",
.mhandler.cmd_new = qmp_marshal_migrate_incoming,
}, },
SQMP SQMP
@ -722,7 +697,6 @@ EQMP
{ {
.name = "migrate-set-cache-size", .name = "migrate-set-cache-size",
.args_type = "value:o", .args_type = "value:o",
.mhandler.cmd_new = qmp_marshal_migrate_set_cache_size,
}, },
SQMP SQMP
@ -745,7 +719,6 @@ EQMP
{ {
.name = "migrate-start-postcopy", .name = "migrate-start-postcopy",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_migrate_start_postcopy,
}, },
SQMP SQMP
@ -764,7 +737,6 @@ EQMP
{ {
.name = "query-migrate-cache-size", .name = "query-migrate-cache-size",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_migrate_cache_size,
}, },
SQMP SQMP
@ -786,7 +758,6 @@ EQMP
{ {
.name = "migrate_set_speed", .name = "migrate_set_speed",
.args_type = "value:o", .args_type = "value:o",
.mhandler.cmd_new = qmp_marshal_migrate_set_speed,
}, },
SQMP SQMP
@ -809,7 +780,6 @@ EQMP
{ {
.name = "migrate_set_downtime", .name = "migrate_set_downtime",
.args_type = "value:T", .args_type = "value:T",
.mhandler.cmd_new = qmp_marshal_migrate_set_downtime,
}, },
SQMP SQMP
@ -834,7 +804,6 @@ EQMP
.args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?", .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
.params = "protocol hostname port tls-port cert-subject", .params = "protocol hostname port tls-port cert-subject",
.help = "set migration information for remote display", .help = "set migration information for remote display",
.mhandler.cmd_new = qmp_marshal_client_migrate_info,
}, },
SQMP SQMP
@ -868,7 +837,6 @@ EQMP
.args_type = "paging:b,protocol:s,detach:b?,begin:i?,end:i?,format:s?", .args_type = "paging:b,protocol:s,detach:b?,begin:i?,end:i?,format:s?",
.params = "-p protocol [-d] [begin] [length] [format]", .params = "-p protocol [-d] [begin] [length] [format]",
.help = "dump guest memory to file", .help = "dump guest memory to file",
.mhandler.cmd_new = qmp_marshal_dump_guest_memory,
}, },
SQMP SQMP
@ -907,7 +875,6 @@ EQMP
{ {
.name = "query-dump-guest-memory-capability", .name = "query-dump-guest-memory-capability",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_dump_guest_memory_capability,
}, },
SQMP SQMP
@ -929,7 +896,6 @@ EQMP
.args_type = "", .args_type = "",
.params = "", .params = "",
.help = "query background dump status", .help = "query background dump status",
.mhandler.cmd_new = qmp_marshal_query_dump,
}, },
SQMP SQMP
@ -952,7 +918,6 @@ EQMP
{ {
.name = "dump-skeys", .name = "dump-skeys",
.args_type = "filename:F", .args_type = "filename:F",
.mhandler.cmd_new = qmp_marshal_dump_skeys,
}, },
#endif #endif
@ -976,7 +941,6 @@ EQMP
{ {
.name = "netdev_add", .name = "netdev_add",
.args_type = "netdev:O", .args_type = "netdev:O",
.mhandler.cmd_new = qmp_netdev_add,
}, },
SQMP SQMP
@ -1007,7 +971,6 @@ EQMP
{ {
.name = "netdev_del", .name = "netdev_del",
.args_type = "id:s", .args_type = "id:s",
.mhandler.cmd_new = qmp_marshal_netdev_del,
}, },
SQMP SQMP
@ -1031,7 +994,6 @@ EQMP
{ {
.name = "object-add", .name = "object-add",
.args_type = "qom-type:s,id:s,props:q?", .args_type = "qom-type:s,id:s,props:q?",
.mhandler.cmd_new = qmp_marshal_object_add,
}, },
SQMP SQMP
@ -1057,7 +1019,6 @@ EQMP
{ {
.name = "object-del", .name = "object-del",
.args_type = "id:s", .args_type = "id:s",
.mhandler.cmd_new = qmp_marshal_object_del,
}, },
SQMP SQMP
@ -1082,7 +1043,6 @@ EQMP
{ {
.name = "block_resize", .name = "block_resize",
.args_type = "device:s?,node-name:s?,size:o", .args_type = "device:s?,node-name:s?,size:o",
.mhandler.cmd_new = qmp_marshal_block_resize,
}, },
SQMP SQMP
@ -1107,7 +1067,6 @@ EQMP
{ {
.name = "block-stream", .name = "block-stream",
.args_type = "job-id:s?,device:B,base:s?,speed:o?,backing-file:s?,on-error:s?", .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 SQMP
@ -1152,7 +1111,6 @@ EQMP
{ {
.name = "block-commit", .name = "block-commit",
.args_type = "job-id:s?,device:B,base:s?,top:s?,backing-file:s?,speed:o?", .args_type = "job-id:s?,device:B,base:s?,top:s?,backing-file:s?,speed:o?",
.mhandler.cmd_new = qmp_marshal_block_commit,
}, },
SQMP SQMP
@ -1219,7 +1177,6 @@ EQMP
.args_type = "job-id:s?,sync:s,device:B,target:s,speed:i?,mode:s?," .args_type = "job-id:s?,sync:s,device:B,target:s,speed:i?,mode:s?,"
"format:s?,bitmap:s?,compress:b?," "format:s?,bitmap:s?,compress:b?,"
"on-source-error:s?,on-target-error:s?", "on-source-error:s?,on-target-error:s?",
.mhandler.cmd_new = qmp_marshal_drive_backup,
}, },
SQMP SQMP
@ -1277,7 +1234,6 @@ EQMP
.name = "blockdev-backup", .name = "blockdev-backup",
.args_type = "job-id:s?,sync:s,device:B,target:B,speed:i?,compress:b?," .args_type = "job-id:s?,sync:s,device:B,target:B,speed:i?,compress:b?,"
"on-source-error:s?,on-target-error:s?", "on-source-error:s?,on-target-error:s?",
.mhandler.cmd_new = qmp_marshal_blockdev_backup,
}, },
SQMP SQMP
@ -1321,33 +1277,27 @@ EQMP
{ {
.name = "block-job-set-speed", .name = "block-job-set-speed",
.args_type = "device:B,speed:o", .args_type = "device:B,speed:o",
.mhandler.cmd_new = qmp_marshal_block_job_set_speed,
}, },
{ {
.name = "block-job-cancel", .name = "block-job-cancel",
.args_type = "device:B,force:b?", .args_type = "device:B,force:b?",
.mhandler.cmd_new = qmp_marshal_block_job_cancel,
}, },
{ {
.name = "block-job-pause", .name = "block-job-pause",
.args_type = "device:B", .args_type = "device:B",
.mhandler.cmd_new = qmp_marshal_block_job_pause,
}, },
{ {
.name = "block-job-resume", .name = "block-job-resume",
.args_type = "device:B", .args_type = "device:B",
.mhandler.cmd_new = qmp_marshal_block_job_resume,
}, },
{ {
.name = "block-job-complete", .name = "block-job-complete",
.args_type = "device:B", .args_type = "device:B",
.mhandler.cmd_new = qmp_marshal_block_job_complete,
}, },
{ {
.name = "transaction", .name = "transaction",
.args_type = "actions:q,properties:q?", .args_type = "actions:q,properties:q?",
.mhandler.cmd_new = qmp_marshal_transaction,
}, },
SQMP SQMP
@ -1442,7 +1392,6 @@ EQMP
{ {
.name = "block-dirty-bitmap-add", .name = "block-dirty-bitmap-add",
.args_type = "node:B,name:s,granularity:i?", .args_type = "node:B,name:s,granularity:i?",
.mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_add,
}, },
SQMP SQMP
@ -1470,7 +1419,6 @@ EQMP
{ {
.name = "block-dirty-bitmap-remove", .name = "block-dirty-bitmap-remove",
.args_type = "node:B,name:s", .args_type = "node:B,name:s",
.mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_remove,
}, },
SQMP SQMP
@ -1498,7 +1446,6 @@ EQMP
{ {
.name = "block-dirty-bitmap-clear", .name = "block-dirty-bitmap-clear",
.args_type = "node:B,name:s", .args_type = "node:B,name:s",
.mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_clear,
}, },
SQMP SQMP
@ -1527,7 +1474,6 @@ EQMP
{ {
.name = "blockdev-snapshot-sync", .name = "blockdev-snapshot-sync",
.args_type = "device:s?,node-name:s?,snapshot-file:s,snapshot-node-name:s?,format:s?,mode:s?", .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 SQMP
@ -1563,7 +1509,6 @@ EQMP
{ {
.name = "blockdev-snapshot", .name = "blockdev-snapshot",
.args_type = "node:s,overlay:s", .args_type = "node:s,overlay:s",
.mhandler.cmd_new = qmp_marshal_blockdev_snapshot,
}, },
SQMP SQMP
@ -1601,7 +1546,6 @@ EQMP
{ {
.name = "blockdev-snapshot-internal-sync", .name = "blockdev-snapshot-internal-sync",
.args_type = "device:B,name:s", .args_type = "device:B,name:s",
.mhandler.cmd_new = qmp_marshal_blockdev_snapshot_internal_sync,
}, },
SQMP SQMP
@ -1631,8 +1575,6 @@ EQMP
{ {
.name = "blockdev-snapshot-delete-internal-sync", .name = "blockdev-snapshot-delete-internal-sync",
.args_type = "device:B,id:s?,name:s?", .args_type = "device:B,id:s?,name:s?",
.mhandler.cmd_new =
qmp_marshal_blockdev_snapshot_delete_internal_sync,
}, },
SQMP SQMP
@ -1676,7 +1618,6 @@ EQMP
"on-source-error:s?,on-target-error:s?," "on-source-error:s?,on-target-error:s?,"
"unmap:b?," "unmap:b?,"
"granularity:i?,buf-size:i?", "granularity:i?,buf-size:i?",
.mhandler.cmd_new = qmp_marshal_drive_mirror,
}, },
SQMP SQMP
@ -1741,7 +1682,6 @@ EQMP
.args_type = "job-id:s?,sync:s,device:B,target:B,replaces:s?,speed:i?," .args_type = "job-id:s?,sync:s,device:B,target:B,replaces:s?,speed:i?,"
"on-source-error:s?,on-target-error:s?," "on-source-error:s?,on-target-error:s?,"
"granularity:i?,buf-size:i?", "granularity:i?,buf-size:i?",
.mhandler.cmd_new = qmp_marshal_blockdev_mirror,
}, },
SQMP SQMP
@ -1790,7 +1730,6 @@ EQMP
{ {
.name = "change-backing-file", .name = "change-backing-file",
.args_type = "device:s,image-node-name:s,backing-file:s", .args_type = "device:s,image-node-name:s,backing-file:s",
.mhandler.cmd_new = qmp_marshal_change_backing_file,
}, },
SQMP SQMP
@ -1830,7 +1769,6 @@ EQMP
{ {
.name = "balloon", .name = "balloon",
.args_type = "value:M", .args_type = "value:M",
.mhandler.cmd_new = qmp_marshal_balloon,
}, },
SQMP SQMP
@ -1853,7 +1791,6 @@ EQMP
{ {
.name = "set_link", .name = "set_link",
.args_type = "name:s,up:b", .args_type = "name:s,up:b",
.mhandler.cmd_new = qmp_marshal_set_link,
}, },
SQMP SQMP
@ -1879,7 +1816,6 @@ EQMP
.args_type = "fdname:s", .args_type = "fdname:s",
.params = "getfd name", .params = "getfd name",
.help = "receive a file descriptor via SCM rights and assign it a name", .help = "receive a file descriptor via SCM rights and assign it a name",
.mhandler.cmd_new = qmp_marshal_getfd,
}, },
SQMP SQMP
@ -1912,7 +1848,6 @@ EQMP
.args_type = "fdname:s", .args_type = "fdname:s",
.params = "closefd name", .params = "closefd name",
.help = "close a file descriptor previously passed via SCM rights", .help = "close a file descriptor previously passed via SCM rights",
.mhandler.cmd_new = qmp_marshal_closefd,
}, },
SQMP SQMP
@ -1937,7 +1872,6 @@ EQMP
.args_type = "fdset-id:i?,opaque:s?", .args_type = "fdset-id:i?,opaque:s?",
.params = "add-fd fdset-id opaque", .params = "add-fd fdset-id opaque",
.help = "Add a file descriptor, that was passed via SCM rights, to an fd set", .help = "Add a file descriptor, that was passed via SCM rights, to an fd set",
.mhandler.cmd_new = qmp_marshal_add_fd,
}, },
SQMP SQMP
@ -1976,7 +1910,6 @@ EQMP
.args_type = "fdset-id:i,fd:i?", .args_type = "fdset-id:i,fd:i?",
.params = "remove-fd fdset-id fd", .params = "remove-fd fdset-id fd",
.help = "Remove a file descriptor from an fd set", .help = "Remove a file descriptor from an fd set",
.mhandler.cmd_new = qmp_marshal_remove_fd,
}, },
SQMP SQMP
@ -2008,7 +1941,6 @@ EQMP
.name = "query-fdsets", .name = "query-fdsets",
.args_type = "", .args_type = "",
.help = "Return information describing all fd sets", .help = "Return information describing all fd sets",
.mhandler.cmd_new = qmp_marshal_query_fdsets,
}, },
SQMP SQMP
@ -2057,7 +1989,6 @@ EQMP
{ {
.name = "block_passwd", .name = "block_passwd",
.args_type = "device:s?,node-name:s?,password:s", .args_type = "device:s?,node-name:s?,password:s",
.mhandler.cmd_new = qmp_marshal_block_passwd,
}, },
SQMP SQMP
@ -2083,7 +2014,6 @@ EQMP
{ {
.name = "block_set_io_throttle", .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?", .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 SQMP
@ -2140,7 +2070,6 @@ EQMP
{ {
.name = "set_password", .name = "set_password",
.args_type = "protocol:s,password:s,connected:s?", .args_type = "protocol:s,password:s,connected:s?",
.mhandler.cmd_new = qmp_marshal_set_password,
}, },
SQMP SQMP
@ -2166,7 +2095,6 @@ EQMP
{ {
.name = "expire_password", .name = "expire_password",
.args_type = "protocol:s,time:s", .args_type = "protocol:s,time:s",
.mhandler.cmd_new = qmp_marshal_expire_password,
}, },
SQMP SQMP
@ -2191,7 +2119,6 @@ EQMP
{ {
.name = "add_client", .name = "add_client",
.args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?", .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
.mhandler.cmd_new = qmp_marshal_add_client,
}, },
SQMP SQMP
@ -2219,7 +2146,6 @@ EQMP
.args_type = "", .args_type = "",
.params = "", .params = "",
.help = "enable QMP capabilities", .help = "enable QMP capabilities",
.mhandler.cmd_new = qmp_marshal_qmp_capabilities,
}, },
SQMP SQMP
@ -2242,7 +2168,6 @@ EQMP
{ {
.name = "human-monitor-command", .name = "human-monitor-command",
.args_type = "command-line:s,cpu-index:i?", .args_type = "command-line:s,cpu-index:i?",
.mhandler.cmd_new = qmp_marshal_human_monitor_command,
}, },
SQMP SQMP
@ -2321,7 +2246,6 @@ EQMP
{ {
.name = "query-version", .name = "query-version",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_version,
}, },
SQMP SQMP
@ -2358,7 +2282,6 @@ EQMP
{ {
.name = "query-commands", .name = "query-commands",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_commands,
}, },
SQMP SQMP
@ -2395,7 +2318,6 @@ EQMP
{ {
.name = "query-events", .name = "query-events",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_events,
}, },
SQMP SQMP
@ -2412,7 +2334,6 @@ EQMP
{ {
.name = "query-qmp-schema", .name = "query-qmp-schema",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_query_qmp_schema,
}, },
SQMP SQMP
@ -2457,7 +2378,6 @@ EQMP
{ {
.name = "query-chardev", .name = "query-chardev",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_chardev,
}, },
SQMP SQMP
@ -2498,7 +2418,6 @@ EQMP
{ {
.name = "query-chardev-backends", .name = "query-chardev-backends",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_chardev_backends,
}, },
SQMP SQMP
@ -2682,7 +2601,6 @@ EQMP
{ {
.name = "query-block", .name = "query-block",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_block,
}, },
SQMP SQMP
@ -2879,7 +2797,6 @@ EQMP
{ {
.name = "query-blockstats", .name = "query-blockstats",
.args_type = "query-nodes:b?", .args_type = "query-nodes:b?",
.mhandler.cmd_new = qmp_marshal_query_blockstats,
}, },
SQMP SQMP
@ -2934,7 +2851,6 @@ EQMP
{ {
.name = "query-cpus", .name = "query-cpus",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_cpus,
}, },
SQMP SQMP
@ -2973,7 +2889,6 @@ EQMP
{ {
.name = "query-iothreads", .name = "query-iothreads",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_iothreads,
}, },
SQMP SQMP
@ -3190,7 +3105,6 @@ EQMP
{ {
.name = "query-pci", .name = "query-pci",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_pci,
}, },
SQMP SQMP
@ -3214,7 +3128,6 @@ EQMP
{ {
.name = "query-kvm", .name = "query-kvm",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_kvm,
}, },
SQMP SQMP
@ -3254,7 +3167,6 @@ EQMP
{ {
.name = "query-status", .name = "query-status",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_status,
}, },
SQMP SQMP
@ -3298,7 +3210,6 @@ EQMP
{ {
.name = "query-mice", .name = "query-mice",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_mice,
}, },
SQMP SQMP
@ -3361,12 +3272,10 @@ EQMP
{ {
.name = "query-vnc", .name = "query-vnc",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_vnc,
}, },
{ {
.name = "query-vnc-servers", .name = "query-vnc-servers",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_vnc_servers,
}, },
SQMP SQMP
@ -3443,7 +3352,6 @@ EQMP
{ {
.name = "query-spice", .name = "query-spice",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_spice,
}, },
#endif #endif
@ -3467,7 +3375,6 @@ EQMP
{ {
.name = "query-name", .name = "query-name",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_name,
}, },
SQMP SQMP
@ -3490,7 +3397,6 @@ EQMP
{ {
.name = "query-uuid", .name = "query-uuid",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_uuid,
}, },
SQMP SQMP
@ -3539,7 +3445,6 @@ EQMP
{ {
.name = "query-command-line-options", .name = "query-command-line-options",
.args_type = "option:s?", .args_type = "option:s?",
.mhandler.cmd_new = qmp_marshal_query_command_line_options,
}, },
SQMP SQMP
@ -3717,7 +3622,6 @@ EQMP
{ {
.name = "query-migrate", .name = "query-migrate",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_migrate,
}, },
SQMP SQMP
@ -3747,7 +3651,6 @@ EQMP
.name = "migrate-set-capabilities", .name = "migrate-set-capabilities",
.args_type = "capabilities:q", .args_type = "capabilities:q",
.params = "capability:s,state:b", .params = "capability:s,state:b",
.mhandler.cmd_new = qmp_marshal_migrate_set_capabilities,
}, },
SQMP SQMP
query-migrate-capabilities query-migrate-capabilities
@ -3784,7 +3687,6 @@ EQMP
{ {
.name = "query-migrate-capabilities", .name = "query-migrate-capabilities",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_migrate_capabilities,
}, },
SQMP SQMP
@ -3814,7 +3716,6 @@ EQMP
.name = "migrate-set-parameters", .name = "migrate-set-parameters",
.args_type = .args_type =
"compress-level:i?,compress-threads:i?,decompress-threads:i?,cpu-throttle-initial:i?,cpu-throttle-increment:i?", "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 SQMP
query-migrate-parameters query-migrate-parameters
@ -3851,7 +3752,6 @@ EQMP
{ {
.name = "query-migrate-parameters", .name = "query-migrate-parameters",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_migrate_parameters,
}, },
SQMP SQMP
@ -3879,106 +3779,88 @@ EQMP
{ {
.name = "query-balloon", .name = "query-balloon",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_balloon,
}, },
{ {
.name = "query-block-jobs", .name = "query-block-jobs",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_block_jobs,
}, },
{ {
.name = "qom-list", .name = "qom-list",
.args_type = "path:s", .args_type = "path:s",
.mhandler.cmd_new = qmp_marshal_qom_list,
}, },
{ {
.name = "qom-set", .name = "qom-set",
.args_type = "path:s,property:s,value:q", .args_type = "path:s,property:s,value:q",
.mhandler.cmd_new = qmp_marshal_qom_set,
}, },
{ {
.name = "qom-get", .name = "qom-get",
.args_type = "path:s,property:s", .args_type = "path:s,property:s",
.mhandler.cmd_new = qmp_marshal_qom_get,
}, },
{ {
.name = "nbd-server-start", .name = "nbd-server-start",
.args_type = "addr:q,tls-creds:s?", .args_type = "addr:q,tls-creds:s?",
.mhandler.cmd_new = qmp_marshal_nbd_server_start,
}, },
{ {
.name = "nbd-server-add", .name = "nbd-server-add",
.args_type = "device:B,writable:b?", .args_type = "device:B,writable:b?",
.mhandler.cmd_new = qmp_marshal_nbd_server_add,
}, },
{ {
.name = "nbd-server-stop", .name = "nbd-server-stop",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_nbd_server_stop,
}, },
{ {
.name = "change-vnc-password", .name = "change-vnc-password",
.args_type = "password:s", .args_type = "password:s",
.mhandler.cmd_new = qmp_marshal_change_vnc_password,
}, },
{ {
.name = "qom-list-types", .name = "qom-list-types",
.args_type = "implements:s?,abstract:b?", .args_type = "implements:s?,abstract:b?",
.mhandler.cmd_new = qmp_marshal_qom_list_types,
}, },
{ {
.name = "device-list-properties", .name = "device-list-properties",
.args_type = "typename:s", .args_type = "typename:s",
.mhandler.cmd_new = qmp_marshal_device_list_properties,
}, },
{ {
.name = "query-machines", .name = "query-machines",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_machines,
}, },
{ {
.name = "query-cpu-definitions", .name = "query-cpu-definitions",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_cpu_definitions,
}, },
{ {
.name = "query-cpu-model-expansion", .name = "query-cpu-model-expansion",
.args_type = "type:s,model:q", .args_type = "type:s,model:q",
.mhandler.cmd_new = qmp_marshal_query_cpu_model_expansion,
}, },
{ {
.name = "query-cpu-model-comparison", .name = "query-cpu-model-comparison",
.args_type = "modela:q,modelb:q", .args_type = "modela:q,modelb:q",
.mhandler.cmd_new = qmp_marshal_query_cpu_model_comparison,
}, },
{ {
.name = "query-cpu-model-baseline", .name = "query-cpu-model-baseline",
.args_type = "modela:q,modelb:q", .args_type = "modela:q,modelb:q",
.mhandler.cmd_new = qmp_marshal_query_cpu_model_baseline,
}, },
{ {
.name = "query-target", .name = "query-target",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_target,
}, },
{ {
.name = "query-tpm", .name = "query-tpm",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_tpm,
}, },
SQMP SQMP
@ -4012,7 +3894,6 @@ EQMP
{ {
.name = "query-tpm-models", .name = "query-tpm-models",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_tpm_models,
}, },
SQMP SQMP
@ -4033,7 +3914,6 @@ EQMP
{ {
.name = "query-tpm-types", .name = "query-tpm-types",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_tpm_types,
}, },
SQMP SQMP
@ -4054,7 +3934,6 @@ EQMP
{ {
.name = "chardev-add", .name = "chardev-add",
.args_type = "id:s,backend:q", .args_type = "id:s,backend:q",
.mhandler.cmd_new = qmp_marshal_chardev_add,
}, },
SQMP SQMP
@ -4091,7 +3970,6 @@ EQMP
{ {
.name = "chardev-remove", .name = "chardev-remove",
.args_type = "id:s", .args_type = "id:s",
.mhandler.cmd_new = qmp_marshal_chardev_remove,
}, },
@ -4114,7 +3992,6 @@ EQMP
{ {
.name = "query-rx-filter", .name = "query-rx-filter",
.args_type = "name:s?", .args_type = "name:s?",
.mhandler.cmd_new = qmp_marshal_query_rx_filter,
}, },
SQMP SQMP
@ -4180,7 +4057,6 @@ EQMP
{ {
.name = "blockdev-add", .name = "blockdev-add",
.args_type = "options:q", .args_type = "options:q",
.mhandler.cmd_new = qmp_marshal_blockdev_add,
}, },
SQMP SQMP
@ -4239,7 +4115,6 @@ EQMP
{ {
.name = "x-blockdev-del", .name = "x-blockdev-del",
.args_type = "id:s?,node-name:s?", .args_type = "id:s?,node-name:s?",
.mhandler.cmd_new = qmp_marshal_x_blockdev_del,
}, },
SQMP SQMP
@ -4296,7 +4171,6 @@ EQMP
{ {
.name = "blockdev-open-tray", .name = "blockdev-open-tray",
.args_type = "device:s,force:b?", .args_type = "device:s,force:b?",
.mhandler.cmd_new = qmp_marshal_blockdev_open_tray,
}, },
SQMP SQMP
@ -4344,7 +4218,6 @@ EQMP
{ {
.name = "blockdev-close-tray", .name = "blockdev-close-tray",
.args_type = "device:s", .args_type = "device:s",
.mhandler.cmd_new = qmp_marshal_blockdev_close_tray,
}, },
SQMP SQMP
@ -4379,7 +4252,6 @@ EQMP
{ {
.name = "x-blockdev-remove-medium", .name = "x-blockdev-remove-medium",
.args_type = "device:s", .args_type = "device:s",
.mhandler.cmd_new = qmp_marshal_x_blockdev_remove_medium,
}, },
SQMP SQMP
@ -4427,7 +4299,6 @@ EQMP
{ {
.name = "x-blockdev-insert-medium", .name = "x-blockdev-insert-medium",
.args_type = "device:s,node-name:s", .args_type = "device:s,node-name:s",
.mhandler.cmd_new = qmp_marshal_x_blockdev_insert_medium,
}, },
SQMP SQMP
@ -4467,7 +4338,6 @@ EQMP
{ {
.name = "x-blockdev-change", .name = "x-blockdev-change",
.args_type = "parent:B,child:B?,node:B?", .args_type = "parent:B,child:B?,node:B?",
.mhandler.cmd_new = qmp_marshal_x_blockdev_change,
}, },
SQMP SQMP
@ -4520,7 +4390,6 @@ EQMP
{ {
.name = "query-named-block-nodes", .name = "query-named-block-nodes",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_named_block_nodes,
}, },
SQMP SQMP
@ -4582,7 +4451,6 @@ EQMP
{ {
.name = "blockdev-change-medium", .name = "blockdev-change-medium",
.args_type = "device:B,filename:F,format:s?,read-only-mode:s?", .args_type = "device:B,filename:F,format:s?,read-only-mode:s?",
.mhandler.cmd_new = qmp_marshal_blockdev_change_medium,
}, },
SQMP SQMP
@ -4635,7 +4503,6 @@ EQMP
{ {
.name = "query-memdev", .name = "query-memdev",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_memdev,
}, },
SQMP SQMP
@ -4673,7 +4540,6 @@ EQMP
{ {
.name = "query-memory-devices", .name = "query-memory-devices",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_memory_devices,
}, },
SQMP SQMP
@ -4700,7 +4566,6 @@ EQMP
{ {
.name = "query-acpi-ospm-status", .name = "query-acpi-ospm-status",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_acpi_ospm_status,
}, },
SQMP SQMP
@ -4723,7 +4588,6 @@ EQMP
{ {
.name = "rtc-reset-reinjection", .name = "rtc-reset-reinjection",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_rtc_reset_reinjection,
}, },
#endif #endif
@ -4744,7 +4608,6 @@ EQMP
{ {
.name = "trace-event-get-state", .name = "trace-event-get-state",
.args_type = "name:s,vcpu:i?", .args_type = "name:s,vcpu:i?",
.mhandler.cmd_new = qmp_marshal_trace_event_get_state,
}, },
SQMP SQMP
@ -4776,7 +4639,6 @@ EQMP
{ {
.name = "trace-event-set-state", .name = "trace-event-set-state",
.args_type = "name:s,enable:b,ignore-unavailable:b?,vcpu:i?", .args_type = "name:s,enable:b,ignore-unavailable:b?,vcpu:i?",
.mhandler.cmd_new = qmp_marshal_trace_event_set_state,
}, },
SQMP SQMP
@ -4811,7 +4673,6 @@ EQMP
{ {
.name = "input-send-event", .name = "input-send-event",
.args_type = "console:i?,events:q", .args_type = "console:i?,events:q",
.mhandler.cmd_new = qmp_marshal_input_send_event,
}, },
SQMP SQMP
@ -4875,7 +4736,6 @@ EQMP
{ {
.name = "block-set-write-threshold", .name = "block-set-write-threshold",
.args_type = "node-name:s,write-threshold:l", .args_type = "node-name:s,write-threshold:l",
.mhandler.cmd_new = qmp_marshal_block_set_write_threshold,
}, },
SQMP SQMP
@ -4903,7 +4763,6 @@ EQMP
{ {
.name = "query-rocker", .name = "query-rocker",
.args_type = "name:s", .args_type = "name:s",
.mhandler.cmd_new = qmp_marshal_query_rocker,
}, },
SQMP SQMP
@ -4924,7 +4783,6 @@ EQMP
{ {
.name = "query-rocker-ports", .name = "query-rocker-ports",
.args_type = "name:s", .args_type = "name:s",
.mhandler.cmd_new = qmp_marshal_query_rocker_ports,
}, },
SQMP SQMP
@ -4949,7 +4807,6 @@ EQMP
{ {
.name = "query-rocker-of-dpa-flows", .name = "query-rocker-of-dpa-flows",
.args_type = "name:s,tbl-id:i?", .args_type = "name:s,tbl-id:i?",
.mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_flows,
}, },
SQMP SQMP
@ -4978,7 +4835,6 @@ EQMP
{ {
.name = "query-rocker-of-dpa-groups", .name = "query-rocker-of-dpa-groups",
.args_type = "name:s,type:i?", .args_type = "name:s,type:i?",
.mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_groups,
}, },
SQMP SQMP
@ -5009,7 +4865,6 @@ EQMP
{ {
.name = "query-gic-capabilities", .name = "query-gic-capabilities",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_gic_capabilities,
}, },
#endif #endif
@ -5033,7 +4888,6 @@ EQMP
{ {
.name = "query-hotpluggable-cpus", .name = "query-hotpluggable-cpus",
.args_type = "", .args_type = "",
.mhandler.cmd_new = qmp_marshal_query_hotpluggable_cpus,
}, },
SQMP SQMP

1
vl.c
View File

@ -2987,6 +2987,7 @@ int main(int argc, char **argv, char **envp)
qemu_init_exec_dir(argv[0]); qemu_init_exec_dir(argv[0]);
module_call_init(MODULE_INIT_QOM); module_call_init(MODULE_INIT_QOM);
module_call_init(MODULE_INIT_QAPI);
qemu_add_opts(&qemu_drive_opts); qemu_add_opts(&qemu_drive_opts);
qemu_add_drive_opts(&qemu_legacy_drive_opts); qemu_add_drive_opts(&qemu_legacy_drive_opts);