]> git.proxmox.com Git - qemu.git/blob - qmp-commands.hx
Merge remote-tracking branch 'luiz/queue/qmp' into staging
[qemu.git] / qmp-commands.hx
1 HXCOMM QMP dispatch table and documentation
2 HXCOMM Text between SQMP and EQMP is copied to the QMP documention file and
3 HXCOMM does not show up in the other formats.
4
5 SQMP
6 QMP Supported Commands
7 ----------------------
8
9 This document describes all commands currently supported by QMP.
10
11 Most of the time their usage is exactly the same as in the user Monitor, this
12 means that any other document which also describe commands (the manpage,
13 QEMU's manual, etc) can and should be consulted.
14
15 QMP has two types of commands: regular and query commands. Regular commands
16 usually change the Virtual Machine's state someway, while query commands just
17 return information. The sections below are divided accordingly.
18
19 It's important to observe that all communication examples are formatted in
20 a reader-friendly way, so that they're easier to understand. However, in real
21 protocol usage, they're emitted as a single line.
22
23 Also, the following notation is used to denote data flow:
24
25 -> data issued by the Client
26 <- Server data response
27
28 Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
29 information on the Server command and response formats.
30
31 NOTE: This document is temporary and will be replaced soon.
32
33 1. Stability Considerations
34 ===========================
35
36 The current QMP command set (described in this file) may be useful for a
37 number of use cases, however it's limited and several commands have bad
38 defined semantics, specially with regard to command completion.
39
40 These problems are going to be solved incrementally in the next QEMU releases
41 and we're going to establish a deprecation policy for badly defined commands.
42
43 If you're planning to adopt QMP, please observe the following:
44
45 1. The deprecation policy will take effect and be documented soon, please
46 check the documentation of each used command as soon as a new release of
47 QEMU is available
48
49 2. DO NOT rely on anything which is not explicit documented
50
51 3. Errors, in special, are not documented. Applications should NOT check
52 for specific errors classes or data (it's strongly recommended to only
53 check for the "error" key)
54
55 2. Regular Commands
56 ===================
57
58 Server's responses in the examples below are always a success response, please
59 refer to the QMP specification for more details on error responses.
60
61 EQMP
62
63 {
64 .name = "quit",
65 .args_type = "",
66 .mhandler.cmd_new = qmp_marshal_input_quit,
67 },
68
69 SQMP
70 quit
71 ----
72
73 Quit the emulator.
74
75 Arguments: None.
76
77 Example:
78
79 -> { "execute": "quit" }
80 <- { "return": {} }
81
82 EQMP
83
84 {
85 .name = "eject",
86 .args_type = "force:-f,device:B",
87 .mhandler.cmd_new = qmp_marshal_input_eject,
88 },
89
90 SQMP
91 eject
92 -----
93
94 Eject a removable medium.
95
96 Arguments:
97
98 - force: force ejection (json-bool, optional)
99 - device: device name (json-string)
100
101 Example:
102
103 -> { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
104 <- { "return": {} }
105
106 Note: The "force" argument defaults to false.
107
108 EQMP
109
110 {
111 .name = "change",
112 .args_type = "device:B,target:F,arg:s?",
113 .mhandler.cmd_new = qmp_marshal_input_change,
114 },
115
116 SQMP
117 change
118 ------
119
120 Change a removable medium or VNC configuration.
121
122 Arguments:
123
124 - "device": device name (json-string)
125 - "target": filename or item (json-string)
126 - "arg": additional argument (json-string, optional)
127
128 Examples:
129
130 1. Change a removable medium
131
132 -> { "execute": "change",
133 "arguments": { "device": "ide1-cd0",
134 "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
135 <- { "return": {} }
136
137 2. Change VNC password
138
139 -> { "execute": "change",
140 "arguments": { "device": "vnc", "target": "password",
141 "arg": "foobar1" } }
142 <- { "return": {} }
143
144 EQMP
145
146 {
147 .name = "screendump",
148 .args_type = "filename:F",
149 .mhandler.cmd_new = qmp_marshal_input_screendump,
150 },
151
152 SQMP
153 screendump
154 ----------
155
156 Save screen into PPM image.
157
158 Arguments:
159
160 - "filename": file path (json-string)
161
162 Example:
163
164 -> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
165 <- { "return": {} }
166
167 EQMP
168
169 {
170 .name = "stop",
171 .args_type = "",
172 .mhandler.cmd_new = qmp_marshal_input_stop,
173 },
174
175 SQMP
176 stop
177 ----
178
179 Stop the emulator.
180
181 Arguments: None.
182
183 Example:
184
185 -> { "execute": "stop" }
186 <- { "return": {} }
187
188 EQMP
189
190 {
191 .name = "cont",
192 .args_type = "",
193 .mhandler.cmd_new = qmp_marshal_input_cont,
194 },
195
196 SQMP
197 cont
198 ----
199
200 Resume emulation.
201
202 Arguments: None.
203
204 Example:
205
206 -> { "execute": "cont" }
207 <- { "return": {} }
208
209 EQMP
210
211 {
212 .name = "system_wakeup",
213 .args_type = "",
214 .mhandler.cmd_new = qmp_marshal_input_system_wakeup,
215 },
216
217 SQMP
218 system_wakeup
219 -------------
220
221 Wakeup guest from suspend.
222
223 Arguments: None.
224
225 Example:
226
227 -> { "execute": "system_wakeup" }
228 <- { "return": {} }
229
230 EQMP
231
232 {
233 .name = "system_reset",
234 .args_type = "",
235 .mhandler.cmd_new = qmp_marshal_input_system_reset,
236 },
237
238 SQMP
239 system_reset
240 ------------
241
242 Reset the system.
243
244 Arguments: None.
245
246 Example:
247
248 -> { "execute": "system_reset" }
249 <- { "return": {} }
250
251 EQMP
252
253 {
254 .name = "system_powerdown",
255 .args_type = "",
256 .mhandler.cmd_new = qmp_marshal_input_system_powerdown,
257 },
258
259 SQMP
260 system_powerdown
261 ----------------
262
263 Send system power down event.
264
265 Arguments: None.
266
267 Example:
268
269 -> { "execute": "system_powerdown" }
270 <- { "return": {} }
271
272 EQMP
273
274 {
275 .name = "device_add",
276 .args_type = "device:O",
277 .params = "driver[,prop=value][,...]",
278 .help = "add device, like -device on the command line",
279 .user_print = monitor_user_noop,
280 .mhandler.cmd_new = do_device_add,
281 },
282
283 SQMP
284 device_add
285 ----------
286
287 Add a device.
288
289 Arguments:
290
291 - "driver": the name of the new device's driver (json-string)
292 - "bus": the device's parent bus (device tree path, json-string, optional)
293 - "id": the device's ID, must be unique (json-string)
294 - device properties
295
296 Example:
297
298 -> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
299 <- { "return": {} }
300
301 Notes:
302
303 (1) For detailed information about this command, please refer to the
304 'docs/qdev-device-use.txt' file.
305
306 (2) It's possible to list device properties by running QEMU with the
307 "-device DEVICE,\?" command-line argument, where DEVICE is the device's name
308
309 EQMP
310
311 {
312 .name = "device_del",
313 .args_type = "id:s",
314 .mhandler.cmd_new = qmp_marshal_input_device_del,
315 },
316
317 SQMP
318 device_del
319 ----------
320
321 Remove a device.
322
323 Arguments:
324
325 - "id": the device's ID (json-string)
326
327 Example:
328
329 -> { "execute": "device_del", "arguments": { "id": "net1" } }
330 <- { "return": {} }
331
332 EQMP
333
334 {
335 .name = "send-key",
336 .args_type = "keys:O,hold-time:i?",
337 .mhandler.cmd_new = qmp_marshal_input_send_key,
338 },
339
340 SQMP
341 send-key
342 ----------
343
344 Send keys to VM.
345
346 Arguments:
347
348 keys array:
349 - "key": key sequence (a json-array of key enum values)
350
351 - hold-time: time to delay key up events, milliseconds. Defaults to 100
352 (json-int, optional)
353
354 Example:
355
356 -> { "execute": "send-key",
357 "arguments": { 'keys': [ 'ctrl', 'alt', 'delete' ] } }
358 <- { "return": {} }
359
360 EQMP
361
362 {
363 .name = "cpu",
364 .args_type = "index:i",
365 .mhandler.cmd_new = qmp_marshal_input_cpu,
366 },
367
368 SQMP
369 cpu
370 ---
371
372 Set the default CPU.
373
374 Arguments:
375
376 - "index": the CPU's index (json-int)
377
378 Example:
379
380 -> { "execute": "cpu", "arguments": { "index": 0 } }
381 <- { "return": {} }
382
383 Note: CPUs' indexes are obtained with the 'query-cpus' command.
384
385 EQMP
386
387 {
388 .name = "memsave",
389 .args_type = "val:l,size:i,filename:s,cpu:i?",
390 .mhandler.cmd_new = qmp_marshal_input_memsave,
391 },
392
393 SQMP
394 memsave
395 -------
396
397 Save to disk virtual memory dump starting at 'val' of size 'size'.
398
399 Arguments:
400
401 - "val": the starting address (json-int)
402 - "size": the memory size, in bytes (json-int)
403 - "filename": file path (json-string)
404 - "cpu": virtual CPU index (json-int, optional)
405
406 Example:
407
408 -> { "execute": "memsave",
409 "arguments": { "val": 10,
410 "size": 100,
411 "filename": "/tmp/virtual-mem-dump" } }
412 <- { "return": {} }
413
414 EQMP
415
416 {
417 .name = "pmemsave",
418 .args_type = "val:l,size:i,filename:s",
419 .mhandler.cmd_new = qmp_marshal_input_pmemsave,
420 },
421
422 SQMP
423 pmemsave
424 --------
425
426 Save to disk physical memory dump starting at 'val' of size 'size'.
427
428 Arguments:
429
430 - "val": the starting address (json-int)
431 - "size": the memory size, in bytes (json-int)
432 - "filename": file path (json-string)
433
434 Example:
435
436 -> { "execute": "pmemsave",
437 "arguments": { "val": 10,
438 "size": 100,
439 "filename": "/tmp/physical-mem-dump" } }
440 <- { "return": {} }
441
442 EQMP
443
444 {
445 .name = "inject-nmi",
446 .args_type = "",
447 .mhandler.cmd_new = qmp_marshal_input_inject_nmi,
448 },
449
450 SQMP
451 inject-nmi
452 ----------
453
454 Inject an NMI on guest's CPUs.
455
456 Arguments: None.
457
458 Example:
459
460 -> { "execute": "inject-nmi" }
461 <- { "return": {} }
462
463 Note: inject-nmi fails when the guest doesn't support injecting.
464 Currently, only x86 guests do.
465
466 EQMP
467
468 {
469 .name = "memchar-write",
470 .args_type = "device:s,size:i,data:s,format:s?",
471 .mhandler.cmd_new = qmp_marshal_input_memchar_write,
472 },
473
474 SQMP
475 memchar-write
476 -------------
477
478 Provide writing interface for CirMemCharDriver. Write data to memory
479 char device.
480
481 Arguments:
482
483 - "device": the name of the char device, must be unique (json-string)
484 - "size": the memory size, in bytes, should be power of 2 (json-int)
485 - "data": the source data write to memory (json-string)
486 - "format": the data format write to memory, default is
487 utf8. (json-string, optional)
488 - Possible values: "utf8", "base64"
489
490 Example:
491
492 -> { "execute": "memchar-write",
493 "arguments": { "device": foo,
494 "size": 8,
495 "data": "abcdefgh",
496 "format": "utf8" } }
497 <- { "return": {} }
498
499 EQMP
500
501 {
502 .name = "memchar-read",
503 .args_type = "device:s,size:i,format:s?",
504 .mhandler.cmd_new = qmp_marshal_input_memchar_read,
505 },
506
507 SQMP
508 memchar-read
509 -------------
510
511 Provide read interface for CirMemCharDriver. Read from the char
512 device memory and return the data with size.
513
514 Arguments:
515
516 - "device": the name of the char device, must be unique (json-string)
517 - "size": the memory size wanted to read in bytes (refer to unencoded
518 size of the raw data), would adjust to the init size of the
519 memchar if the requested size is larger than it. (json-int)
520 - "format": the data format write to memchardev, default is
521 utf8. (json-string, optional)
522 - Possible values: "utf8", "base64"
523
524 Example:
525
526 -> { "execute": "memchar-read",
527 "arguments": { "device": foo,
528 "size": 1000,
529 "format": "utf8" } }
530 <- { "return": { "data": "data string...", "count": 1000 } }
531
532 EQMP
533
534 {
535 .name = "xen-save-devices-state",
536 .args_type = "filename:F",
537 .mhandler.cmd_new = qmp_marshal_input_xen_save_devices_state,
538 },
539
540 SQMP
541 xen-save-devices-state
542 -------
543
544 Save the state of all devices to file. The RAM and the block devices
545 of the VM are not saved by this command.
546
547 Arguments:
548
549 - "filename": the file to save the state of the devices to as binary
550 data. See xen-save-devices-state.txt for a description of the binary
551 format.
552
553 Example:
554
555 -> { "execute": "xen-save-devices-state",
556 "arguments": { "filename": "/tmp/save" } }
557 <- { "return": {} }
558
559 EQMP
560
561 {
562 .name = "xen-set-global-dirty-log",
563 .args_type = "enable:b",
564 .mhandler.cmd_new = qmp_marshal_input_xen_set_global_dirty_log,
565 },
566
567 SQMP
568 xen-set-global-dirty-log
569 -------
570
571 Enable or disable the global dirty log mode.
572
573 Arguments:
574
575 - "enable": Enable it or disable it.
576
577 Example:
578
579 -> { "execute": "xen-set-global-dirty-log",
580 "arguments": { "enable": true } }
581 <- { "return": {} }
582
583 EQMP
584
585 {
586 .name = "migrate",
587 .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
588 .mhandler.cmd_new = qmp_marshal_input_migrate,
589 },
590
591 SQMP
592 migrate
593 -------
594
595 Migrate to URI.
596
597 Arguments:
598
599 - "blk": block migration, full disk copy (json-bool, optional)
600 - "inc": incremental disk copy (json-bool, optional)
601 - "uri": Destination URI (json-string)
602
603 Example:
604
605 -> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
606 <- { "return": {} }
607
608 Notes:
609
610 (1) The 'query-migrate' command should be used to check migration's progress
611 and final result (this information is provided by the 'status' member)
612 (2) All boolean arguments default to false
613 (3) The user Monitor's "detach" argument is invalid in QMP and should not
614 be used
615
616 EQMP
617
618 {
619 .name = "migrate_cancel",
620 .args_type = "",
621 .mhandler.cmd_new = qmp_marshal_input_migrate_cancel,
622 },
623
624 SQMP
625 migrate_cancel
626 --------------
627
628 Cancel the current migration.
629
630 Arguments: None.
631
632 Example:
633
634 -> { "execute": "migrate_cancel" }
635 <- { "return": {} }
636
637 EQMP
638 {
639 .name = "migrate-set-cache-size",
640 .args_type = "value:o",
641 .mhandler.cmd_new = qmp_marshal_input_migrate_set_cache_size,
642 },
643
644 SQMP
645 migrate-set-cache-size
646 ---------------------
647
648 Set cache size to be used by XBZRLE migration, the cache size will be rounded
649 down to the nearest power of 2
650
651 Arguments:
652
653 - "value": cache size in bytes (json-int)
654
655 Example:
656
657 -> { "execute": "migrate-set-cache-size", "arguments": { "value": 536870912 } }
658 <- { "return": {} }
659
660 EQMP
661 {
662 .name = "query-migrate-cache-size",
663 .args_type = "",
664 .mhandler.cmd_new = qmp_marshal_input_query_migrate_cache_size,
665 },
666
667 SQMP
668 query-migrate-cache-size
669 ---------------------
670
671 Show cache size to be used by XBZRLE migration
672
673 returns a json-object with the following information:
674 - "size" : json-int
675
676 Example:
677
678 -> { "execute": "query-migrate-cache-size" }
679 <- { "return": 67108864 }
680
681 EQMP
682
683 {
684 .name = "migrate_set_speed",
685 .args_type = "value:o",
686 .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed,
687 },
688
689 SQMP
690 migrate_set_speed
691 -----------------
692
693 Set maximum speed for migrations.
694
695 Arguments:
696
697 - "value": maximum speed, in bytes per second (json-int)
698
699 Example:
700
701 -> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
702 <- { "return": {} }
703
704 EQMP
705
706 {
707 .name = "migrate_set_downtime",
708 .args_type = "value:T",
709 .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime,
710 },
711
712 SQMP
713 migrate_set_downtime
714 --------------------
715
716 Set maximum tolerated downtime (in seconds) for migrations.
717
718 Arguments:
719
720 - "value": maximum downtime (json-number)
721
722 Example:
723
724 -> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
725 <- { "return": {} }
726
727 EQMP
728
729 {
730 .name = "client_migrate_info",
731 .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
732 .params = "protocol hostname port tls-port cert-subject",
733 .help = "send migration info to spice/vnc client",
734 .user_print = monitor_user_noop,
735 .mhandler.cmd_async = client_migrate_info,
736 .flags = MONITOR_CMD_ASYNC,
737 },
738
739 SQMP
740 client_migrate_info
741 ------------------
742
743 Set the spice/vnc connection info for the migration target. The spice/vnc
744 server will ask the spice/vnc client to automatically reconnect using the
745 new parameters (if specified) once the vm migration finished successfully.
746
747 Arguments:
748
749 - "protocol": protocol: "spice" or "vnc" (json-string)
750 - "hostname": migration target hostname (json-string)
751 - "port": spice/vnc tcp port for plaintext channels (json-int, optional)
752 - "tls-port": spice tcp port for tls-secured channels (json-int, optional)
753 - "cert-subject": server certificate subject (json-string, optional)
754
755 Example:
756
757 -> { "execute": "client_migrate_info",
758 "arguments": { "protocol": "spice",
759 "hostname": "virt42.lab.kraxel.org",
760 "port": 1234 } }
761 <- { "return": {} }
762
763 EQMP
764
765 {
766 .name = "dump-guest-memory",
767 .args_type = "paging:b,protocol:s,begin:i?,end:i?",
768 .params = "-p protocol [begin] [length]",
769 .help = "dump guest memory to file",
770 .user_print = monitor_user_noop,
771 .mhandler.cmd_new = qmp_marshal_input_dump_guest_memory,
772 },
773
774 SQMP
775 dump
776
777
778 Dump guest memory to file. The file can be processed with crash or gdb.
779
780 Arguments:
781
782 - "paging": do paging to get guest's memory mapping (json-bool)
783 - "protocol": destination file(started with "file:") or destination file
784 descriptor (started with "fd:") (json-string)
785 - "begin": the starting physical address. It's optional, and should be specified
786 with length together (json-int)
787 - "length": the memory size, in bytes. It's optional, and should be specified
788 with begin together (json-int)
789
790 Example:
791
792 -> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
793 <- { "return": {} }
794
795 Notes:
796
797 (1) All boolean arguments default to false
798
799 EQMP
800
801 {
802 .name = "netdev_add",
803 .args_type = "netdev:O",
804 .mhandler.cmd_new = qmp_netdev_add,
805 },
806
807 SQMP
808 netdev_add
809 ----------
810
811 Add host network device.
812
813 Arguments:
814
815 - "type": the device type, "tap", "user", ... (json-string)
816 - "id": the device's ID, must be unique (json-string)
817 - device options
818
819 Example:
820
821 -> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
822 <- { "return": {} }
823
824 Note: The supported device options are the same ones supported by the '-net'
825 command-line argument, which are listed in the '-help' output or QEMU's
826 manual
827
828 EQMP
829
830 {
831 .name = "netdev_del",
832 .args_type = "id:s",
833 .mhandler.cmd_new = qmp_marshal_input_netdev_del,
834 },
835
836 SQMP
837 netdev_del
838 ----------
839
840 Remove host network device.
841
842 Arguments:
843
844 - "id": the device's ID, must be unique (json-string)
845
846 Example:
847
848 -> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
849 <- { "return": {} }
850
851
852 EQMP
853
854 {
855 .name = "block_resize",
856 .args_type = "device:B,size:o",
857 .mhandler.cmd_new = qmp_marshal_input_block_resize,
858 },
859
860 SQMP
861 block_resize
862 ------------
863
864 Resize a block image while a guest is running.
865
866 Arguments:
867
868 - "device": the device's ID, must be unique (json-string)
869 - "size": new size
870
871 Example:
872
873 -> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
874 <- { "return": {} }
875
876 EQMP
877
878 {
879 .name = "block-stream",
880 .args_type = "device:B,base:s?,speed:o?,on-error:s?",
881 .mhandler.cmd_new = qmp_marshal_input_block_stream,
882 },
883
884 {
885 .name = "block-commit",
886 .args_type = "device:B,base:s?,top:s,speed:o?",
887 .mhandler.cmd_new = qmp_marshal_input_block_commit,
888 },
889
890 {
891 .name = "block-job-set-speed",
892 .args_type = "device:B,speed:o",
893 .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
894 },
895
896 {
897 .name = "block-job-cancel",
898 .args_type = "device:B,force:b?",
899 .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
900 },
901 {
902 .name = "block-job-pause",
903 .args_type = "device:B",
904 .mhandler.cmd_new = qmp_marshal_input_block_job_pause,
905 },
906 {
907 .name = "block-job-resume",
908 .args_type = "device:B",
909 .mhandler.cmd_new = qmp_marshal_input_block_job_resume,
910 },
911 {
912 .name = "block-job-complete",
913 .args_type = "device:B",
914 .mhandler.cmd_new = qmp_marshal_input_block_job_complete,
915 },
916 {
917 .name = "transaction",
918 .args_type = "actions:q",
919 .mhandler.cmd_new = qmp_marshal_input_transaction,
920 },
921
922 SQMP
923 transaction
924 -----------
925
926 Atomically operate on one or more block devices. The only supported
927 operation for now is snapshotting. If there is any failure performing
928 any of the operations, all snapshots for the group are abandoned, and
929 the original disks pre-snapshot attempt are used.
930
931 A list of dictionaries is accepted, that contains the actions to be performed.
932 For snapshots this is the device, the file to use for the new snapshot,
933 and the format. The default format, if not specified, is qcow2.
934
935 Each new snapshot defaults to being created by QEMU (wiping any
936 contents if the file already exists), but it is also possible to reuse
937 an externally-created file. In the latter case, you should ensure that
938 the new image file has the same contents as the current one; QEMU cannot
939 perform any meaningful check. Typically this is achieved by using the
940 current image file as the backing file for the new image.
941
942 Arguments:
943
944 actions array:
945 - "type": the operation to perform. The only supported
946 value is "blockdev-snapshot-sync". (json-string)
947 - "data": a dictionary. The contents depend on the value
948 of "type". When "type" is "blockdev-snapshot-sync":
949 - "device": device name to snapshot (json-string)
950 - "snapshot-file": name of new image file (json-string)
951 - "format": format of new image (json-string, optional)
952 - "mode": whether and how QEMU should create the snapshot file
953 (NewImageMode, optional, default "absolute-paths")
954
955 Example:
956
957 -> { "execute": "transaction",
958 "arguments": { "actions": [
959 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0",
960 "snapshot-file": "/some/place/my-image",
961 "format": "qcow2" } },
962 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1",
963 "snapshot-file": "/some/place/my-image2",
964 "mode": "existing",
965 "format": "qcow2" } } ] } }
966 <- { "return": {} }
967
968 EQMP
969
970 {
971 .name = "blockdev-snapshot-sync",
972 .args_type = "device:B,snapshot-file:s,format:s?,mode:s?",
973 .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
974 },
975
976 SQMP
977 blockdev-snapshot-sync
978 ----------------------
979
980 Synchronous snapshot of a block device. snapshot-file specifies the
981 target of the new image. If the file exists, or if it is a device, the
982 snapshot will be created in the existing file/device. If does not
983 exist, a new file will be created. format specifies the format of the
984 snapshot image, default is qcow2.
985
986 Arguments:
987
988 - "device": device name to snapshot (json-string)
989 - "snapshot-file": name of new image file (json-string)
990 - "mode": whether and how QEMU should create the snapshot file
991 (NewImageMode, optional, default "absolute-paths")
992 - "format": format of new image (json-string, optional)
993
994 Example:
995
996 -> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
997 "snapshot-file":
998 "/some/place/my-image",
999 "format": "qcow2" } }
1000 <- { "return": {} }
1001
1002 EQMP
1003
1004 {
1005 .name = "drive-mirror",
1006 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
1007 "on-source-error:s?,on-target-error:s?",
1008 .mhandler.cmd_new = qmp_marshal_input_drive_mirror,
1009 },
1010
1011 SQMP
1012 drive-mirror
1013 ------------
1014
1015 Start mirroring a block device's writes to a new destination. target
1016 specifies the target of the new image. If the file exists, or if it is
1017 a device, it will be used as the new destination for writes. If it does not
1018 exist, a new file will be created. format specifies the format of the
1019 mirror image, default is to probe if mode='existing', else the format
1020 of the source.
1021
1022 Arguments:
1023
1024 - "device": device name to operate on (json-string)
1025 - "target": name of new image file (json-string)
1026 - "format": format of new image (json-string, optional)
1027 - "mode": how an image file should be created into the target
1028 file/device (NewImageMode, optional, default 'absolute-paths')
1029 - "speed": maximum speed of the streaming job, in bytes per second
1030 (json-int)
1031 - "sync": what parts of the disk image should be copied to the destination;
1032 possibilities include "full" for all the disk, "top" for only the sectors
1033 allocated in the topmost image, or "none" to only replicate new I/O
1034 (MirrorSyncMode).
1035 - "on-source-error": the action to take on an error on the source
1036 (BlockdevOnError, default 'report')
1037 - "on-target-error": the action to take on an error on the target
1038 (BlockdevOnError, default 'report')
1039
1040
1041
1042 Example:
1043
1044 -> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0",
1045 "target": "/some/place/my-image",
1046 "sync": "full",
1047 "format": "qcow2" } }
1048 <- { "return": {} }
1049
1050 EQMP
1051
1052 {
1053 .name = "balloon",
1054 .args_type = "value:M",
1055 .mhandler.cmd_new = qmp_marshal_input_balloon,
1056 },
1057
1058 SQMP
1059 balloon
1060 -------
1061
1062 Request VM to change its memory allocation (in bytes).
1063
1064 Arguments:
1065
1066 - "value": New memory allocation (json-int)
1067
1068 Example:
1069
1070 -> { "execute": "balloon", "arguments": { "value": 536870912 } }
1071 <- { "return": {} }
1072
1073 EQMP
1074
1075 {
1076 .name = "set_link",
1077 .args_type = "name:s,up:b",
1078 .mhandler.cmd_new = qmp_marshal_input_set_link,
1079 },
1080
1081 SQMP
1082 set_link
1083 --------
1084
1085 Change the link status of a network adapter.
1086
1087 Arguments:
1088
1089 - "name": network device name (json-string)
1090 - "up": status is up (json-bool)
1091
1092 Example:
1093
1094 -> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
1095 <- { "return": {} }
1096
1097 EQMP
1098
1099 {
1100 .name = "getfd",
1101 .args_type = "fdname:s",
1102 .params = "getfd name",
1103 .help = "receive a file descriptor via SCM rights and assign it a name",
1104 .mhandler.cmd_new = qmp_marshal_input_getfd,
1105 },
1106
1107 SQMP
1108 getfd
1109 -----
1110
1111 Receive a file descriptor via SCM rights and assign it a name.
1112
1113 Arguments:
1114
1115 - "fdname": file descriptor name (json-string)
1116
1117 Example:
1118
1119 -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1120 <- { "return": {} }
1121
1122 Notes:
1123
1124 (1) If the name specified by the "fdname" argument already exists,
1125 the file descriptor assigned to it will be closed and replaced
1126 by the received file descriptor.
1127 (2) The 'closefd' command can be used to explicitly close the file
1128 descriptor when it is no longer needed.
1129
1130 EQMP
1131
1132 {
1133 .name = "closefd",
1134 .args_type = "fdname:s",
1135 .params = "closefd name",
1136 .help = "close a file descriptor previously passed via SCM rights",
1137 .mhandler.cmd_new = qmp_marshal_input_closefd,
1138 },
1139
1140 SQMP
1141 closefd
1142 -------
1143
1144 Close a file descriptor previously passed via SCM rights.
1145
1146 Arguments:
1147
1148 - "fdname": file descriptor name (json-string)
1149
1150 Example:
1151
1152 -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1153 <- { "return": {} }
1154
1155 EQMP
1156
1157 {
1158 .name = "add-fd",
1159 .args_type = "fdset-id:i?,opaque:s?",
1160 .params = "add-fd fdset-id opaque",
1161 .help = "Add a file descriptor, that was passed via SCM rights, to an fd set",
1162 .mhandler.cmd_new = qmp_marshal_input_add_fd,
1163 },
1164
1165 SQMP
1166 add-fd
1167 -------
1168
1169 Add a file descriptor, that was passed via SCM rights, to an fd set.
1170
1171 Arguments:
1172
1173 - "fdset-id": The ID of the fd set to add the file descriptor to.
1174 (json-int, optional)
1175 - "opaque": A free-form string that can be used to describe the fd.
1176 (json-string, optional)
1177
1178 Return a json-object with the following information:
1179
1180 - "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1181 - "fd": The file descriptor that was received via SCM rights and added to the
1182 fd set. (json-int)
1183
1184 Example:
1185
1186 -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1187 <- { "return": { "fdset-id": 1, "fd": 3 } }
1188
1189 Notes:
1190
1191 (1) The list of fd sets is shared by all monitor connections.
1192 (2) If "fdset-id" is not specified, a new fd set will be created.
1193
1194 EQMP
1195
1196 {
1197 .name = "remove-fd",
1198 .args_type = "fdset-id:i,fd:i?",
1199 .params = "remove-fd fdset-id fd",
1200 .help = "Remove a file descriptor from an fd set",
1201 .mhandler.cmd_new = qmp_marshal_input_remove_fd,
1202 },
1203
1204 SQMP
1205 remove-fd
1206 ---------
1207
1208 Remove a file descriptor from an fd set.
1209
1210 Arguments:
1211
1212 - "fdset-id": The ID of the fd set that the file descriptor belongs to.
1213 (json-int)
1214 - "fd": The file descriptor that is to be removed. (json-int, optional)
1215
1216 Example:
1217
1218 -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1219 <- { "return": {} }
1220
1221 Notes:
1222
1223 (1) The list of fd sets is shared by all monitor connections.
1224 (2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1225 removed.
1226
1227 EQMP
1228
1229 {
1230 .name = "query-fdsets",
1231 .args_type = "",
1232 .help = "Return information describing all fd sets",
1233 .mhandler.cmd_new = qmp_marshal_input_query_fdsets,
1234 },
1235
1236 SQMP
1237 query-fdsets
1238 -------------
1239
1240 Return information describing all fd sets.
1241
1242 Arguments: None
1243
1244 Example:
1245
1246 -> { "execute": "query-fdsets" }
1247 <- { "return": [
1248 {
1249 "fds": [
1250 {
1251 "fd": 30,
1252 "opaque": "rdonly:/path/to/file"
1253 },
1254 {
1255 "fd": 24,
1256 "opaque": "rdwr:/path/to/file"
1257 }
1258 ],
1259 "fdset-id": 1
1260 },
1261 {
1262 "fds": [
1263 {
1264 "fd": 28
1265 },
1266 {
1267 "fd": 29
1268 }
1269 ],
1270 "fdset-id": 0
1271 }
1272 ]
1273 }
1274
1275 Note: The list of fd sets is shared by all monitor connections.
1276
1277 EQMP
1278
1279 {
1280 .name = "block_passwd",
1281 .args_type = "device:B,password:s",
1282 .mhandler.cmd_new = qmp_marshal_input_block_passwd,
1283 },
1284
1285 SQMP
1286 block_passwd
1287 ------------
1288
1289 Set the password of encrypted block devices.
1290
1291 Arguments:
1292
1293 - "device": device name (json-string)
1294 - "password": password (json-string)
1295
1296 Example:
1297
1298 -> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
1299 "password": "12345" } }
1300 <- { "return": {} }
1301
1302 EQMP
1303
1304 {
1305 .name = "block_set_io_throttle",
1306 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
1307 .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
1308 },
1309
1310 SQMP
1311 block_set_io_throttle
1312 ------------
1313
1314 Change I/O throttle limits for a block drive.
1315
1316 Arguments:
1317
1318 - "device": device name (json-string)
1319 - "bps": total throughput limit in bytes per second(json-int)
1320 - "bps_rd": read throughput limit in bytes per second(json-int)
1321 - "bps_wr": read throughput limit in bytes per second(json-int)
1322 - "iops": total I/O operations per second(json-int)
1323 - "iops_rd": read I/O operations per second(json-int)
1324 - "iops_wr": write I/O operations per second(json-int)
1325
1326 Example:
1327
1328 -> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1329 "bps": "1000000",
1330 "bps_rd": "0",
1331 "bps_wr": "0",
1332 "iops": "0",
1333 "iops_rd": "0",
1334 "iops_wr": "0" } }
1335 <- { "return": {} }
1336
1337 EQMP
1338
1339 {
1340 .name = "set_password",
1341 .args_type = "protocol:s,password:s,connected:s?",
1342 .mhandler.cmd_new = qmp_marshal_input_set_password,
1343 },
1344
1345 SQMP
1346 set_password
1347 ------------
1348
1349 Set the password for vnc/spice protocols.
1350
1351 Arguments:
1352
1353 - "protocol": protocol name (json-string)
1354 - "password": password (json-string)
1355 - "connected": [ keep | disconnect | fail ] (josn-string, optional)
1356
1357 Example:
1358
1359 -> { "execute": "set_password", "arguments": { "protocol": "vnc",
1360 "password": "secret" } }
1361 <- { "return": {} }
1362
1363 EQMP
1364
1365 {
1366 .name = "expire_password",
1367 .args_type = "protocol:s,time:s",
1368 .mhandler.cmd_new = qmp_marshal_input_expire_password,
1369 },
1370
1371 SQMP
1372 expire_password
1373 ---------------
1374
1375 Set the password expire time for vnc/spice protocols.
1376
1377 Arguments:
1378
1379 - "protocol": protocol name (json-string)
1380 - "time": [ now | never | +secs | secs ] (json-string)
1381
1382 Example:
1383
1384 -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1385 "time": "+60" } }
1386 <- { "return": {} }
1387
1388 EQMP
1389
1390 {
1391 .name = "add_client",
1392 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1393 .mhandler.cmd_new = qmp_marshal_input_add_client,
1394 },
1395
1396 SQMP
1397 add_client
1398 ----------
1399
1400 Add a graphics client
1401
1402 Arguments:
1403
1404 - "protocol": protocol name (json-string)
1405 - "fdname": file descriptor name (json-string)
1406 - "skipauth": whether to skip authentication (json-bool, optional)
1407 - "tls": whether to perform TLS (json-bool, optional)
1408
1409 Example:
1410
1411 -> { "execute": "add_client", "arguments": { "protocol": "vnc",
1412 "fdname": "myclient" } }
1413 <- { "return": {} }
1414
1415 EQMP
1416 {
1417 .name = "qmp_capabilities",
1418 .args_type = "",
1419 .params = "",
1420 .help = "enable QMP capabilities",
1421 .user_print = monitor_user_noop,
1422 .mhandler.cmd_new = do_qmp_capabilities,
1423 },
1424
1425 SQMP
1426 qmp_capabilities
1427 ----------------
1428
1429 Enable QMP capabilities.
1430
1431 Arguments: None.
1432
1433 Example:
1434
1435 -> { "execute": "qmp_capabilities" }
1436 <- { "return": {} }
1437
1438 Note: This command must be issued before issuing any other command.
1439
1440 EQMP
1441
1442 {
1443 .name = "human-monitor-command",
1444 .args_type = "command-line:s,cpu-index:i?",
1445 .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1446 },
1447
1448 SQMP
1449 human-monitor-command
1450 ---------------------
1451
1452 Execute a Human Monitor command.
1453
1454 Arguments:
1455
1456 - command-line: the command name and its arguments, just like the
1457 Human Monitor's shell (json-string)
1458 - cpu-index: select the CPU number to be used by commands which access CPU
1459 data, like 'info registers'. The Monitor selects CPU 0 if this
1460 argument is not provided (json-int, optional)
1461
1462 Example:
1463
1464 -> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1465 <- { "return": "kvm support: enabled\r\n" }
1466
1467 Notes:
1468
1469 (1) The Human Monitor is NOT an stable interface, this means that command
1470 names, arguments and responses can change or be removed at ANY time.
1471 Applications that rely on long term stability guarantees should NOT
1472 use this command
1473
1474 (2) Limitations:
1475
1476 o This command is stateless, this means that commands that depend
1477 on state information (such as getfd) might not work
1478
1479 o Commands that prompt the user for data (eg. 'cont' when the block
1480 device is encrypted) don't currently work
1481
1482 3. Query Commands
1483 =================
1484
1485 HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1486 HXCOMM this! We will possibly move query commands definitions inside those
1487 HXCOMM sections, just like regular commands.
1488
1489 EQMP
1490
1491 SQMP
1492 query-version
1493 -------------
1494
1495 Show QEMU version.
1496
1497 Return a json-object with the following information:
1498
1499 - "qemu": A json-object containing three integer values:
1500 - "major": QEMU's major version (json-int)
1501 - "minor": QEMU's minor version (json-int)
1502 - "micro": QEMU's micro version (json-int)
1503 - "package": package's version (json-string)
1504
1505 Example:
1506
1507 -> { "execute": "query-version" }
1508 <- {
1509 "return":{
1510 "qemu":{
1511 "major":0,
1512 "minor":11,
1513 "micro":5
1514 },
1515 "package":""
1516 }
1517 }
1518
1519 EQMP
1520
1521 {
1522 .name = "query-version",
1523 .args_type = "",
1524 .mhandler.cmd_new = qmp_marshal_input_query_version,
1525 },
1526
1527 SQMP
1528 query-commands
1529 --------------
1530
1531 List QMP available commands.
1532
1533 Each command is represented by a json-object, the returned value is a json-array
1534 of all commands.
1535
1536 Each json-object contain:
1537
1538 - "name": command's name (json-string)
1539
1540 Example:
1541
1542 -> { "execute": "query-commands" }
1543 <- {
1544 "return":[
1545 {
1546 "name":"query-balloon"
1547 },
1548 {
1549 "name":"system_powerdown"
1550 }
1551 ]
1552 }
1553
1554 Note: This example has been shortened as the real response is too long.
1555
1556 EQMP
1557
1558 {
1559 .name = "query-commands",
1560 .args_type = "",
1561 .mhandler.cmd_new = qmp_marshal_input_query_commands,
1562 },
1563
1564 SQMP
1565 query-events
1566 --------------
1567
1568 List QMP available events.
1569
1570 Each event is represented by a json-object, the returned value is a json-array
1571 of all events.
1572
1573 Each json-object contains:
1574
1575 - "name": event's name (json-string)
1576
1577 Example:
1578
1579 -> { "execute": "query-events" }
1580 <- {
1581 "return":[
1582 {
1583 "name":"SHUTDOWN"
1584 },
1585 {
1586 "name":"RESET"
1587 }
1588 ]
1589 }
1590
1591 Note: This example has been shortened as the real response is too long.
1592
1593 EQMP
1594
1595 {
1596 .name = "query-events",
1597 .args_type = "",
1598 .mhandler.cmd_new = qmp_marshal_input_query_events,
1599 },
1600
1601 SQMP
1602 query-chardev
1603 -------------
1604
1605 Each device is represented by a json-object. The returned value is a json-array
1606 of all devices.
1607
1608 Each json-object contain the following:
1609
1610 - "label": device's label (json-string)
1611 - "filename": device's file (json-string)
1612
1613 Example:
1614
1615 -> { "execute": "query-chardev" }
1616 <- {
1617 "return":[
1618 {
1619 "label":"monitor",
1620 "filename":"stdio"
1621 },
1622 {
1623 "label":"serial0",
1624 "filename":"vc"
1625 }
1626 ]
1627 }
1628
1629 EQMP
1630
1631 {
1632 .name = "query-chardev",
1633 .args_type = "",
1634 .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1635 },
1636
1637 SQMP
1638 query-block
1639 -----------
1640
1641 Show the block devices.
1642
1643 Each block device information is stored in a json-object and the returned value
1644 is a json-array of all devices.
1645
1646 Each json-object contain the following:
1647
1648 - "device": device name (json-string)
1649 - "type": device type (json-string)
1650 - deprecated, retained for backward compatibility
1651 - Possible values: "unknown"
1652 - "removable": true if the device is removable, false otherwise (json-bool)
1653 - "locked": true if the device is locked, false otherwise (json-bool)
1654 - "tray-open": only present if removable, true if the device has a tray,
1655 and it is open (json-bool)
1656 - "inserted": only present if the device is inserted, it is a json-object
1657 containing the following:
1658 - "file": device file name (json-string)
1659 - "ro": true if read-only, false otherwise (json-bool)
1660 - "drv": driver format name (json-string)
1661 - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1662 "file", "file", "ftp", "ftps", "host_cdrom",
1663 "host_device", "host_floppy", "http", "https",
1664 "nbd", "parallels", "qcow", "qcow2", "raw",
1665 "tftp", "vdi", "vmdk", "vpc", "vvfat"
1666 - "backing_file": backing file name (json-string, optional)
1667 - "backing_file_depth": number of files in the backing file chain (json-int)
1668 - "encrypted": true if encrypted, false otherwise (json-bool)
1669 - "bps": limit total bytes per second (json-int)
1670 - "bps_rd": limit read bytes per second (json-int)
1671 - "bps_wr": limit write bytes per second (json-int)
1672 - "iops": limit total I/O operations per second (json-int)
1673 - "iops_rd": limit read operations per second (json-int)
1674 - "iops_wr": limit write operations per second (json-int)
1675
1676 - "io-status": I/O operation status, only present if the device supports it
1677 and the VM is configured to stop on errors. It's always reset
1678 to "ok" when the "cont" command is issued (json_string, optional)
1679 - Possible values: "ok", "failed", "nospace"
1680
1681 Example:
1682
1683 -> { "execute": "query-block" }
1684 <- {
1685 "return":[
1686 {
1687 "io-status": "ok",
1688 "device":"ide0-hd0",
1689 "locked":false,
1690 "removable":false,
1691 "inserted":{
1692 "ro":false,
1693 "drv":"qcow2",
1694 "encrypted":false,
1695 "file":"disks/test.img",
1696 "backing_file_depth":0,
1697 "bps":1000000,
1698 "bps_rd":0,
1699 "bps_wr":0,
1700 "iops":1000000,
1701 "iops_rd":0,
1702 "iops_wr":0,
1703 },
1704 "type":"unknown"
1705 },
1706 {
1707 "io-status": "ok",
1708 "device":"ide1-cd0",
1709 "locked":false,
1710 "removable":true,
1711 "type":"unknown"
1712 },
1713 {
1714 "device":"floppy0",
1715 "locked":false,
1716 "removable":true,
1717 "type":"unknown"
1718 },
1719 {
1720 "device":"sd0",
1721 "locked":false,
1722 "removable":true,
1723 "type":"unknown"
1724 }
1725 ]
1726 }
1727
1728 EQMP
1729
1730 {
1731 .name = "query-block",
1732 .args_type = "",
1733 .mhandler.cmd_new = qmp_marshal_input_query_block,
1734 },
1735
1736 SQMP
1737 query-blockstats
1738 ----------------
1739
1740 Show block device statistics.
1741
1742 Each device statistic information is stored in a json-object and the returned
1743 value is a json-array of all devices.
1744
1745 Each json-object contain the following:
1746
1747 - "device": device name (json-string)
1748 - "stats": A json-object with the statistics information, it contains:
1749 - "rd_bytes": bytes read (json-int)
1750 - "wr_bytes": bytes written (json-int)
1751 - "rd_operations": read operations (json-int)
1752 - "wr_operations": write operations (json-int)
1753 - "flush_operations": cache flush operations (json-int)
1754 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1755 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1756 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1757 - "wr_highest_offset": Highest offset of a sector written since the
1758 BlockDriverState has been opened (json-int)
1759 - "parent": Contains recursively the statistics of the underlying
1760 protocol (e.g. the host file for a qcow2 image). If there is
1761 no underlying protocol, this field is omitted
1762 (json-object, optional)
1763
1764 Example:
1765
1766 -> { "execute": "query-blockstats" }
1767 <- {
1768 "return":[
1769 {
1770 "device":"ide0-hd0",
1771 "parent":{
1772 "stats":{
1773 "wr_highest_offset":3686448128,
1774 "wr_bytes":9786368,
1775 "wr_operations":751,
1776 "rd_bytes":122567168,
1777 "rd_operations":36772
1778 "wr_total_times_ns":313253456
1779 "rd_total_times_ns":3465673657
1780 "flush_total_times_ns":49653
1781 "flush_operations":61,
1782 }
1783 },
1784 "stats":{
1785 "wr_highest_offset":2821110784,
1786 "wr_bytes":9786368,
1787 "wr_operations":692,
1788 "rd_bytes":122739200,
1789 "rd_operations":36604
1790 "flush_operations":51,
1791 "wr_total_times_ns":313253456
1792 "rd_total_times_ns":3465673657
1793 "flush_total_times_ns":49653
1794 }
1795 },
1796 {
1797 "device":"ide1-cd0",
1798 "stats":{
1799 "wr_highest_offset":0,
1800 "wr_bytes":0,
1801 "wr_operations":0,
1802 "rd_bytes":0,
1803 "rd_operations":0
1804 "flush_operations":0,
1805 "wr_total_times_ns":0
1806 "rd_total_times_ns":0
1807 "flush_total_times_ns":0
1808 }
1809 },
1810 {
1811 "device":"floppy0",
1812 "stats":{
1813 "wr_highest_offset":0,
1814 "wr_bytes":0,
1815 "wr_operations":0,
1816 "rd_bytes":0,
1817 "rd_operations":0
1818 "flush_operations":0,
1819 "wr_total_times_ns":0
1820 "rd_total_times_ns":0
1821 "flush_total_times_ns":0
1822 }
1823 },
1824 {
1825 "device":"sd0",
1826 "stats":{
1827 "wr_highest_offset":0,
1828 "wr_bytes":0,
1829 "wr_operations":0,
1830 "rd_bytes":0,
1831 "rd_operations":0
1832 "flush_operations":0,
1833 "wr_total_times_ns":0
1834 "rd_total_times_ns":0
1835 "flush_total_times_ns":0
1836 }
1837 }
1838 ]
1839 }
1840
1841 EQMP
1842
1843 {
1844 .name = "query-blockstats",
1845 .args_type = "",
1846 .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1847 },
1848
1849 SQMP
1850 query-cpus
1851 ----------
1852
1853 Show CPU information.
1854
1855 Return a json-array. Each CPU is represented by a json-object, which contains:
1856
1857 - "CPU": CPU index (json-int)
1858 - "current": true if this is the current CPU, false otherwise (json-bool)
1859 - "halted": true if the cpu is halted, false otherwise (json-bool)
1860 - Current program counter. The key's name depends on the architecture:
1861 "pc": i386/x86_64 (json-int)
1862 "nip": PPC (json-int)
1863 "pc" and "npc": sparc (json-int)
1864 "PC": mips (json-int)
1865 - "thread_id": ID of the underlying host thread (json-int)
1866
1867 Example:
1868
1869 -> { "execute": "query-cpus" }
1870 <- {
1871 "return":[
1872 {
1873 "CPU":0,
1874 "current":true,
1875 "halted":false,
1876 "pc":3227107138
1877 "thread_id":3134
1878 },
1879 {
1880 "CPU":1,
1881 "current":false,
1882 "halted":true,
1883 "pc":7108165
1884 "thread_id":3135
1885 }
1886 ]
1887 }
1888
1889 EQMP
1890
1891 {
1892 .name = "query-cpus",
1893 .args_type = "",
1894 .mhandler.cmd_new = qmp_marshal_input_query_cpus,
1895 },
1896
1897 SQMP
1898 query-pci
1899 ---------
1900
1901 PCI buses and devices information.
1902
1903 The returned value is a json-array of all buses. Each bus is represented by
1904 a json-object, which has a key with a json-array of all PCI devices attached
1905 to it. Each device is represented by a json-object.
1906
1907 The bus json-object contains the following:
1908
1909 - "bus": bus number (json-int)
1910 - "devices": a json-array of json-objects, each json-object represents a
1911 PCI device
1912
1913 The PCI device json-object contains the following:
1914
1915 - "bus": identical to the parent's bus number (json-int)
1916 - "slot": slot number (json-int)
1917 - "function": function number (json-int)
1918 - "class_info": a json-object containing:
1919 - "desc": device class description (json-string, optional)
1920 - "class": device class number (json-int)
1921 - "id": a json-object containing:
1922 - "device": device ID (json-int)
1923 - "vendor": vendor ID (json-int)
1924 - "irq": device's IRQ if assigned (json-int, optional)
1925 - "qdev_id": qdev id string (json-string)
1926 - "pci_bridge": It's a json-object, only present if this device is a
1927 PCI bridge, contains:
1928 - "bus": bus number (json-int)
1929 - "secondary": secondary bus number (json-int)
1930 - "subordinate": subordinate bus number (json-int)
1931 - "io_range": I/O memory range information, a json-object with the
1932 following members:
1933 - "base": base address, in bytes (json-int)
1934 - "limit": limit address, in bytes (json-int)
1935 - "memory_range": memory range information, a json-object with the
1936 following members:
1937 - "base": base address, in bytes (json-int)
1938 - "limit": limit address, in bytes (json-int)
1939 - "prefetchable_range": Prefetchable memory range information, a
1940 json-object with the following members:
1941 - "base": base address, in bytes (json-int)
1942 - "limit": limit address, in bytes (json-int)
1943 - "devices": a json-array of PCI devices if there's any attached, each
1944 each element is represented by a json-object, which contains
1945 the same members of the 'PCI device json-object' described
1946 above (optional)
1947 - "regions": a json-array of json-objects, each json-object represents a
1948 memory region of this device
1949
1950 The memory range json-object contains the following:
1951
1952 - "base": base memory address (json-int)
1953 - "limit": limit value (json-int)
1954
1955 The region json-object can be an I/O region or a memory region, an I/O region
1956 json-object contains the following:
1957
1958 - "type": "io" (json-string, fixed)
1959 - "bar": BAR number (json-int)
1960 - "address": memory address (json-int)
1961 - "size": memory size (json-int)
1962
1963 A memory region json-object contains the following:
1964
1965 - "type": "memory" (json-string, fixed)
1966 - "bar": BAR number (json-int)
1967 - "address": memory address (json-int)
1968 - "size": memory size (json-int)
1969 - "mem_type_64": true or false (json-bool)
1970 - "prefetch": true or false (json-bool)
1971
1972 Example:
1973
1974 -> { "execute": "query-pci" }
1975 <- {
1976 "return":[
1977 {
1978 "bus":0,
1979 "devices":[
1980 {
1981 "bus":0,
1982 "qdev_id":"",
1983 "slot":0,
1984 "class_info":{
1985 "class":1536,
1986 "desc":"Host bridge"
1987 },
1988 "id":{
1989 "device":32902,
1990 "vendor":4663
1991 },
1992 "function":0,
1993 "regions":[
1994
1995 ]
1996 },
1997 {
1998 "bus":0,
1999 "qdev_id":"",
2000 "slot":1,
2001 "class_info":{
2002 "class":1537,
2003 "desc":"ISA bridge"
2004 },
2005 "id":{
2006 "device":32902,
2007 "vendor":28672
2008 },
2009 "function":0,
2010 "regions":[
2011
2012 ]
2013 },
2014 {
2015 "bus":0,
2016 "qdev_id":"",
2017 "slot":1,
2018 "class_info":{
2019 "class":257,
2020 "desc":"IDE controller"
2021 },
2022 "id":{
2023 "device":32902,
2024 "vendor":28688
2025 },
2026 "function":1,
2027 "regions":[
2028 {
2029 "bar":4,
2030 "size":16,
2031 "address":49152,
2032 "type":"io"
2033 }
2034 ]
2035 },
2036 {
2037 "bus":0,
2038 "qdev_id":"",
2039 "slot":2,
2040 "class_info":{
2041 "class":768,
2042 "desc":"VGA controller"
2043 },
2044 "id":{
2045 "device":4115,
2046 "vendor":184
2047 },
2048 "function":0,
2049 "regions":[
2050 {
2051 "prefetch":true,
2052 "mem_type_64":false,
2053 "bar":0,
2054 "size":33554432,
2055 "address":4026531840,
2056 "type":"memory"
2057 },
2058 {
2059 "prefetch":false,
2060 "mem_type_64":false,
2061 "bar":1,
2062 "size":4096,
2063 "address":4060086272,
2064 "type":"memory"
2065 },
2066 {
2067 "prefetch":false,
2068 "mem_type_64":false,
2069 "bar":6,
2070 "size":65536,
2071 "address":-1,
2072 "type":"memory"
2073 }
2074 ]
2075 },
2076 {
2077 "bus":0,
2078 "qdev_id":"",
2079 "irq":11,
2080 "slot":4,
2081 "class_info":{
2082 "class":1280,
2083 "desc":"RAM controller"
2084 },
2085 "id":{
2086 "device":6900,
2087 "vendor":4098
2088 },
2089 "function":0,
2090 "regions":[
2091 {
2092 "bar":0,
2093 "size":32,
2094 "address":49280,
2095 "type":"io"
2096 }
2097 ]
2098 }
2099 ]
2100 }
2101 ]
2102 }
2103
2104 Note: This example has been shortened as the real response is too long.
2105
2106 EQMP
2107
2108 {
2109 .name = "query-pci",
2110 .args_type = "",
2111 .mhandler.cmd_new = qmp_marshal_input_query_pci,
2112 },
2113
2114 SQMP
2115 query-kvm
2116 ---------
2117
2118 Show KVM information.
2119
2120 Return a json-object with the following information:
2121
2122 - "enabled": true if KVM support is enabled, false otherwise (json-bool)
2123 - "present": true if QEMU has KVM support, false otherwise (json-bool)
2124
2125 Example:
2126
2127 -> { "execute": "query-kvm" }
2128 <- { "return": { "enabled": true, "present": true } }
2129
2130 EQMP
2131
2132 {
2133 .name = "query-kvm",
2134 .args_type = "",
2135 .mhandler.cmd_new = qmp_marshal_input_query_kvm,
2136 },
2137
2138 SQMP
2139 query-status
2140 ------------
2141
2142 Return a json-object with the following information:
2143
2144 - "running": true if the VM is running, or false if it is paused (json-bool)
2145 - "singlestep": true if the VM is in single step mode,
2146 false otherwise (json-bool)
2147 - "status": one of the following values (json-string)
2148 "debug" - QEMU is running on a debugger
2149 "inmigrate" - guest is paused waiting for an incoming migration
2150 "internal-error" - An internal error that prevents further guest
2151 execution has occurred
2152 "io-error" - the last IOP has failed and the device is configured
2153 to pause on I/O errors
2154 "paused" - guest has been paused via the 'stop' command
2155 "postmigrate" - guest is paused following a successful 'migrate'
2156 "prelaunch" - QEMU was started with -S and guest has not started
2157 "finish-migrate" - guest is paused to finish the migration process
2158 "restore-vm" - guest is paused to restore VM state
2159 "running" - guest is actively running
2160 "save-vm" - guest is paused to save the VM state
2161 "shutdown" - guest is shut down (and -no-shutdown is in use)
2162 "watchdog" - the watchdog action is configured to pause and
2163 has been triggered
2164
2165 Example:
2166
2167 -> { "execute": "query-status" }
2168 <- { "return": { "running": true, "singlestep": false, "status": "running" } }
2169
2170 EQMP
2171
2172 {
2173 .name = "query-status",
2174 .args_type = "",
2175 .mhandler.cmd_new = qmp_marshal_input_query_status,
2176 },
2177
2178 SQMP
2179 query-mice
2180 ----------
2181
2182 Show VM mice information.
2183
2184 Each mouse is represented by a json-object, the returned value is a json-array
2185 of all mice.
2186
2187 The mouse json-object contains the following:
2188
2189 - "name": mouse's name (json-string)
2190 - "index": mouse's index (json-int)
2191 - "current": true if this mouse is receiving events, false otherwise (json-bool)
2192 - "absolute": true if the mouse generates absolute input events (json-bool)
2193
2194 Example:
2195
2196 -> { "execute": "query-mice" }
2197 <- {
2198 "return":[
2199 {
2200 "name":"QEMU Microsoft Mouse",
2201 "index":0,
2202 "current":false,
2203 "absolute":false
2204 },
2205 {
2206 "name":"QEMU PS/2 Mouse",
2207 "index":1,
2208 "current":true,
2209 "absolute":true
2210 }
2211 ]
2212 }
2213
2214 EQMP
2215
2216 {
2217 .name = "query-mice",
2218 .args_type = "",
2219 .mhandler.cmd_new = qmp_marshal_input_query_mice,
2220 },
2221
2222 SQMP
2223 query-vnc
2224 ---------
2225
2226 Show VNC server information.
2227
2228 Return a json-object with server information. Connected clients are returned
2229 as a json-array of json-objects.
2230
2231 The main json-object contains the following:
2232
2233 - "enabled": true or false (json-bool)
2234 - "host": server's IP address (json-string)
2235 - "family": address family (json-string)
2236 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2237 - "service": server's port number (json-string)
2238 - "auth": authentication method (json-string)
2239 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
2240 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
2241 "vencrypt+plain", "vencrypt+tls+none",
2242 "vencrypt+tls+plain", "vencrypt+tls+sasl",
2243 "vencrypt+tls+vnc", "vencrypt+x509+none",
2244 "vencrypt+x509+plain", "vencrypt+x509+sasl",
2245 "vencrypt+x509+vnc", "vnc"
2246 - "clients": a json-array of all connected clients
2247
2248 Clients are described by a json-object, each one contain the following:
2249
2250 - "host": client's IP address (json-string)
2251 - "family": address family (json-string)
2252 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2253 - "service": client's port number (json-string)
2254 - "x509_dname": TLS dname (json-string, optional)
2255 - "sasl_username": SASL username (json-string, optional)
2256
2257 Example:
2258
2259 -> { "execute": "query-vnc" }
2260 <- {
2261 "return":{
2262 "enabled":true,
2263 "host":"0.0.0.0",
2264 "service":"50402",
2265 "auth":"vnc",
2266 "family":"ipv4",
2267 "clients":[
2268 {
2269 "host":"127.0.0.1",
2270 "service":"50401",
2271 "family":"ipv4"
2272 }
2273 ]
2274 }
2275 }
2276
2277 EQMP
2278
2279 {
2280 .name = "query-vnc",
2281 .args_type = "",
2282 .mhandler.cmd_new = qmp_marshal_input_query_vnc,
2283 },
2284
2285 SQMP
2286 query-spice
2287 -----------
2288
2289 Show SPICE server information.
2290
2291 Return a json-object with server information. Connected clients are returned
2292 as a json-array of json-objects.
2293
2294 The main json-object contains the following:
2295
2296 - "enabled": true or false (json-bool)
2297 - "host": server's IP address (json-string)
2298 - "port": server's port number (json-int, optional)
2299 - "tls-port": server's port number (json-int, optional)
2300 - "auth": authentication method (json-string)
2301 - Possible values: "none", "spice"
2302 - "channels": a json-array of all active channels clients
2303
2304 Channels are described by a json-object, each one contain the following:
2305
2306 - "host": client's IP address (json-string)
2307 - "family": address family (json-string)
2308 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2309 - "port": client's port number (json-string)
2310 - "connection-id": spice connection id. All channels with the same id
2311 belong to the same spice session (json-int)
2312 - "channel-type": channel type. "1" is the main control channel, filter for
2313 this one if you want track spice sessions only (json-int)
2314 - "channel-id": channel id. Usually "0", might be different needed when
2315 multiple channels of the same type exist, such as multiple
2316 display channels in a multihead setup (json-int)
2317 - "tls": whevener the channel is encrypted (json-bool)
2318
2319 Example:
2320
2321 -> { "execute": "query-spice" }
2322 <- {
2323 "return": {
2324 "enabled": true,
2325 "auth": "spice",
2326 "port": 5920,
2327 "tls-port": 5921,
2328 "host": "0.0.0.0",
2329 "channels": [
2330 {
2331 "port": "54924",
2332 "family": "ipv4",
2333 "channel-type": 1,
2334 "connection-id": 1804289383,
2335 "host": "127.0.0.1",
2336 "channel-id": 0,
2337 "tls": true
2338 },
2339 {
2340 "port": "36710",
2341 "family": "ipv4",
2342 "channel-type": 4,
2343 "connection-id": 1804289383,
2344 "host": "127.0.0.1",
2345 "channel-id": 0,
2346 "tls": false
2347 },
2348 [ ... more channels follow ... ]
2349 ]
2350 }
2351 }
2352
2353 EQMP
2354
2355 #if defined(CONFIG_SPICE)
2356 {
2357 .name = "query-spice",
2358 .args_type = "",
2359 .mhandler.cmd_new = qmp_marshal_input_query_spice,
2360 },
2361 #endif
2362
2363 SQMP
2364 query-name
2365 ----------
2366
2367 Show VM name.
2368
2369 Return a json-object with the following information:
2370
2371 - "name": VM's name (json-string, optional)
2372
2373 Example:
2374
2375 -> { "execute": "query-name" }
2376 <- { "return": { "name": "qemu-name" } }
2377
2378 EQMP
2379
2380 {
2381 .name = "query-name",
2382 .args_type = "",
2383 .mhandler.cmd_new = qmp_marshal_input_query_name,
2384 },
2385
2386 SQMP
2387 query-uuid
2388 ----------
2389
2390 Show VM UUID.
2391
2392 Return a json-object with the following information:
2393
2394 - "UUID": Universally Unique Identifier (json-string)
2395
2396 Example:
2397
2398 -> { "execute": "query-uuid" }
2399 <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2400
2401 EQMP
2402
2403 {
2404 .name = "query-uuid",
2405 .args_type = "",
2406 .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2407 },
2408
2409 SQMP
2410 query-migrate
2411 -------------
2412
2413 Migration status.
2414
2415 Return a json-object. If migration is active there will be another json-object
2416 with RAM migration status and if block migration is active another one with
2417 block migration status.
2418
2419 The main json-object contains the following:
2420
2421 - "status": migration status (json-string)
2422 - Possible values: "active", "completed", "failed", "cancelled"
2423 - "total-time": total amount of ms since migration started. If
2424 migration has ended, it returns the total migration
2425 time (json-int)
2426 - "downtime": only present when migration has finished correctly
2427 total amount in ms for downtime that happened (json-int)
2428 - "expected-downtime": only present while migration is active
2429 total amount in ms for downtime that was calculated on
2430 the last bitmap round (json-int)
2431 - "ram": only present if "status" is "active", it is a json-object with the
2432 following RAM information (in bytes):
2433 - "transferred": amount transferred (json-int)
2434 - "remaining": amount remaining (json-int)
2435 - "total": total (json-int)
2436 - "duplicate": number of duplicated pages (json-int)
2437 - "normal" : number of normal pages transferred (json-int)
2438 - "normal-bytes" : number of normal bytes transferred (json-int)
2439 - "disk": only present if "status" is "active" and it is a block migration,
2440 it is a json-object with the following disk information (in bytes):
2441 - "transferred": amount transferred (json-int)
2442 - "remaining": amount remaining (json-int)
2443 - "total": total (json-int)
2444 - "xbzrle-cache": only present if XBZRLE is active.
2445 It is a json-object with the following XBZRLE information:
2446 - "cache-size": XBZRLE cache size
2447 - "bytes": total XBZRLE bytes transferred
2448 - "pages": number of XBZRLE compressed pages
2449 - "cache-miss": number of cache misses
2450 - "overflow": number of XBZRLE overflows
2451 Examples:
2452
2453 1. Before the first migration
2454
2455 -> { "execute": "query-migrate" }
2456 <- { "return": {} }
2457
2458 2. Migration is done and has succeeded
2459
2460 -> { "execute": "query-migrate" }
2461 <- { "return": {
2462 "status": "completed",
2463 "ram":{
2464 "transferred":123,
2465 "remaining":123,
2466 "total":246,
2467 "total-time":12345,
2468 "downtime":12345,
2469 "duplicate":123,
2470 "normal":123,
2471 "normal-bytes":123456
2472 }
2473 }
2474 }
2475
2476 3. Migration is done and has failed
2477
2478 -> { "execute": "query-migrate" }
2479 <- { "return": { "status": "failed" } }
2480
2481 4. Migration is being performed and is not a block migration:
2482
2483 -> { "execute": "query-migrate" }
2484 <- {
2485 "return":{
2486 "status":"active",
2487 "ram":{
2488 "transferred":123,
2489 "remaining":123,
2490 "total":246,
2491 "total-time":12345,
2492 "expected-downtime":12345,
2493 "duplicate":123,
2494 "normal":123,
2495 "normal-bytes":123456
2496 }
2497 }
2498 }
2499
2500 5. Migration is being performed and is a block migration:
2501
2502 -> { "execute": "query-migrate" }
2503 <- {
2504 "return":{
2505 "status":"active",
2506 "ram":{
2507 "total":1057024,
2508 "remaining":1053304,
2509 "transferred":3720,
2510 "total-time":12345,
2511 "expected-downtime":12345,
2512 "duplicate":123,
2513 "normal":123,
2514 "normal-bytes":123456
2515 },
2516 "disk":{
2517 "total":20971520,
2518 "remaining":20880384,
2519 "transferred":91136
2520 }
2521 }
2522 }
2523
2524 6. Migration is being performed and XBZRLE is active:
2525
2526 -> { "execute": "query-migrate" }
2527 <- {
2528 "return":{
2529 "status":"active",
2530 "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
2531 "ram":{
2532 "total":1057024,
2533 "remaining":1053304,
2534 "transferred":3720,
2535 "total-time":12345,
2536 "expected-downtime":12345,
2537 "duplicate":10,
2538 "normal":3333,
2539 "normal-bytes":3412992
2540 },
2541 "xbzrle-cache":{
2542 "cache-size":67108864,
2543 "bytes":20971520,
2544 "pages":2444343,
2545 "cache-miss":2244,
2546 "overflow":34434
2547 }
2548 }
2549 }
2550
2551 EQMP
2552
2553 {
2554 .name = "query-migrate",
2555 .args_type = "",
2556 .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2557 },
2558
2559 SQMP
2560 migrate-set-capabilities
2561 -------
2562
2563 Enable/Disable migration capabilities
2564
2565 - "xbzrle": xbzrle support
2566
2567 Arguments:
2568
2569 Example:
2570
2571 -> { "execute": "migrate-set-capabilities" , "arguments":
2572 { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
2573
2574 EQMP
2575
2576 {
2577 .name = "migrate-set-capabilities",
2578 .args_type = "capabilities:O",
2579 .params = "capability:s,state:b",
2580 .mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities,
2581 },
2582 SQMP
2583 query-migrate-capabilities
2584 -------
2585
2586 Query current migration capabilities
2587
2588 - "capabilities": migration capabilities state
2589 - "xbzrle" : XBZRLE state (json-bool)
2590
2591 Arguments:
2592
2593 Example:
2594
2595 -> { "execute": "query-migrate-capabilities" }
2596 <- { "return": {
2597 "capabilities" : [ { "capability" : "xbzrle", "state" : false } ]
2598 }
2599 }
2600 EQMP
2601
2602 {
2603 .name = "query-migrate-capabilities",
2604 .args_type = "",
2605 .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities,
2606 },
2607
2608 SQMP
2609 query-balloon
2610 -------------
2611
2612 Show balloon information.
2613
2614 Make an asynchronous request for balloon info. When the request completes a
2615 json-object will be returned containing the following data:
2616
2617 - "actual": current balloon value in bytes (json-int)
2618
2619 Example:
2620
2621 -> { "execute": "query-balloon" }
2622 <- {
2623 "return":{
2624 "actual":1073741824,
2625 }
2626 }
2627
2628 EQMP
2629
2630 {
2631 .name = "query-balloon",
2632 .args_type = "",
2633 .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2634 },
2635
2636 {
2637 .name = "query-block-jobs",
2638 .args_type = "",
2639 .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2640 },
2641
2642 {
2643 .name = "qom-list",
2644 .args_type = "path:s",
2645 .mhandler.cmd_new = qmp_marshal_input_qom_list,
2646 },
2647
2648 {
2649 .name = "qom-set",
2650 .args_type = "path:s,property:s,value:q",
2651 .mhandler.cmd_new = qmp_qom_set,
2652 },
2653
2654 {
2655 .name = "qom-get",
2656 .args_type = "path:s,property:s",
2657 .mhandler.cmd_new = qmp_qom_get,
2658 },
2659
2660 {
2661 .name = "nbd-server-start",
2662 .args_type = "addr:q",
2663 .mhandler.cmd_new = qmp_marshal_input_nbd_server_start,
2664 },
2665 {
2666 .name = "nbd-server-add",
2667 .args_type = "device:B,writable:b?",
2668 .mhandler.cmd_new = qmp_marshal_input_nbd_server_add,
2669 },
2670 {
2671 .name = "nbd-server-stop",
2672 .args_type = "",
2673 .mhandler.cmd_new = qmp_marshal_input_nbd_server_stop,
2674 },
2675
2676 {
2677 .name = "change-vnc-password",
2678 .args_type = "password:s",
2679 .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2680 },
2681 {
2682 .name = "qom-list-types",
2683 .args_type = "implements:s?,abstract:b?",
2684 .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
2685 },
2686
2687 {
2688 .name = "device-list-properties",
2689 .args_type = "typename:s",
2690 .mhandler.cmd_new = qmp_marshal_input_device_list_properties,
2691 },
2692
2693 {
2694 .name = "query-machines",
2695 .args_type = "",
2696 .mhandler.cmd_new = qmp_marshal_input_query_machines,
2697 },
2698
2699 {
2700 .name = "query-cpu-definitions",
2701 .args_type = "",
2702 .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions,
2703 },
2704
2705 {
2706 .name = "query-target",
2707 .args_type = "",
2708 .mhandler.cmd_new = qmp_marshal_input_query_target,
2709 },
2710
2711 {
2712 .name = "chardev-add",
2713 .args_type = "id:s,backend:q",
2714 .mhandler.cmd_new = qmp_marshal_input_chardev_add,
2715 },
2716
2717 SQMP
2718 chardev-add
2719 ----------------
2720
2721 Add a chardev.
2722
2723 Arguments:
2724
2725 - "id": the chardev's ID, must be unique (json-string)
2726 - "backend": chardev backend type + parameters
2727
2728 Examples:
2729
2730 -> { "execute" : "chardev-add",
2731 "arguments" : { "id" : "foo",
2732 "backend" : { "type" : "null", "data" : {} } } }
2733 <- { "return": {} }
2734
2735 -> { "execute" : "chardev-add",
2736 "arguments" : { "id" : "bar",
2737 "backend" : { "type" : "file",
2738 "data" : { "out" : "/tmp/bar.log" } } } }
2739 <- { "return": {} }
2740
2741 -> { "execute" : "chardev-add",
2742 "arguments" : { "id" : "baz",
2743 "backend" : { "type" : "pty", "data" : {} } } }
2744 <- { "return": { "pty" : "/dev/pty/42" } }
2745
2746 EQMP
2747
2748 {
2749 .name = "chardev-remove",
2750 .args_type = "id:s",
2751 .mhandler.cmd_new = qmp_marshal_input_chardev_remove,
2752 },
2753
2754
2755 SQMP
2756 chardev-remove
2757 --------------
2758
2759 Remove a chardev.
2760
2761 Arguments:
2762
2763 - "id": the chardev's ID, must exist and not be in use (json-string)
2764
2765 Example:
2766
2767 -> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
2768 <- { "return": {} }
2769
2770 EQMP