summaryrefslogtreecommitdiffstats
path: root/docs/interop/qmp-intro.txt
blob: 1c745a7af041a6450b32d431f01f4e561ed95617 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
QEMU Machine Protocol
                          =====================

Introduction
------------

The QEMU Machine Protocol (QMP) allows applications to operate a
QEMU instance.

QMP is JSON[1] based and features the following:

- Lightweight, text-based, easy to parse data format
- Asynchronous messages support (ie. events)
- Capabilities Negotiation

For detailed information on QMP's usage, please, refer to the following files:

o qmp-spec.txt      QEMU Machine Protocol current specification
o qemu-qmp-ref.html QEMU QMP commands and events (auto-generated at build-time)

[1] https://www.json.org

Usage
-----

You can use the -qmp option to enable QMP. For example, the following
makes QMP available on localhost port 4444:

$ qemu [...] -qmp tcp:localhost:4444,server=on,wait=off

However, for more flexibility and to make use of more options, the -mon
command-line option should be used. For instance, the following example
creates one HMP instance (human monitor) on stdio and one QMP instance
on localhost port 4444:

$ qemu [...] -chardev stdio,id=mon0 -mon chardev=mon0,mode=readline \
             -chardev socket,id=mon1,host=localhost,port=4444,server=on,wait=off \
             -mon chardev=mon1,mode=control,pretty=on

Please, refer to QEMU's manpage for more information.

Simple Testing
--------------

To manually test QMP one can connect with telnet and issue commands by hand:

$ telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
{
    "QMP": {
        "version": {
            "qemu": {
                "micro": 0,
                "minor": 0,
                "major": 3
            },
            "package": "v3.0.0"
        },
        "capabilities": [
            "oob"
        ]
    }
}

{ "execute": "qmp_capabilities" }
{
    "return": {
    }
}

{ "execute": "query-status" }
{
    "return": {
        "status": "prelaunch", 
        "singlestep": false, 
        "running": false
    }
}

Please refer to docs/interop/qemu-qmp-ref.* for a complete command
reference, generated from qapi/qapi-schema.json.

QMP wiki page
-------------

https://wiki.qemu.org/QMP