<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linux-kvm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Miguel</id>
	<title>KVM - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://linux-kvm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Miguel"/>
	<link rel="alternate" type="text/html" href="https://linux-kvm.org/page/Special:Contributions/Miguel"/>
	<updated>2026-04-21T16:32:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Lists,_IRC&amp;diff=3512</id>
		<title>Lists, IRC</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Lists,_IRC&amp;diff=3512"/>
		<updated>2011-03-07T14:53:46Z</updated>

		<summary type="html">&lt;p&gt;Miguel: Removed Spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Lists, IRC=&lt;br /&gt;
&lt;br /&gt;
== Mailing Lists ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! list&lt;br /&gt;
! topics&lt;br /&gt;
! subscribe&lt;br /&gt;
! archives&lt;br /&gt;
|-&lt;br /&gt;
| kvm@vger.kernel.org&lt;br /&gt;
| general and x86&lt;br /&gt;
| [mailto:majordomo@vger.kernel.org?body=subscribe%20kvm subscribe]&lt;br /&gt;
| [http://news.gmane.org/gmane.comp.emulators.kvm.devel Gmane], [http://www.spinics.net/lists/kvm spinics], [http://marc.info/?l=kvm MARC]&lt;br /&gt;
|-&lt;br /&gt;
| kvm-commits@vger.kernel.org &lt;br /&gt;
| kernel commit logs &lt;br /&gt;
| [mailto:majordomo@vger.kernel.org?body=subscribe%20kvm-commits subscribe] &lt;br /&gt;
| [http://news.gmane.org/gmane.comp.emulators.kvm.scm Gmane] &lt;br /&gt;
|-&lt;br /&gt;
| kvm-ia64@vger.kernel.org &lt;br /&gt;
| ia64 &lt;br /&gt;
| [mailto:majordomo@vger.kernel.org?body=subscribe%20kvm-ia64 subscribe] &lt;br /&gt;
| [http://www.spinics.net/lists/kvm-ia64/ spinics]&lt;br /&gt;
|-&lt;br /&gt;
| kvm-ppc@vger.kernel.org &lt;br /&gt;
| PowerPC &lt;br /&gt;
| [mailto:majordomo@vger.kernel.org?body=subscribe%20kvm-ppc subscribe] &lt;br /&gt;
| [http://marc.info/?l=kvm-ppc-devel MARC] &lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
While the lists are used mainly for development, user queries are welcome. No need to subscribe for a one-off question, just send an email. You may also want to check the various qemu resources on the web, as kvm shares the qemu user interface and networking.&lt;br /&gt;
&lt;br /&gt;
Please observe the usual mailing list etiquette: don&#039;t top-post, and trim excess quotations from the mail you are replying to.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t post to individual kvm developers directly.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
&lt;br /&gt;
Join us on &#039;&#039;&#039;#kvm&#039;&#039;&#039; at [http://freenode.net Freenode]. Don&#039;t report serious bugs on IRC; they&#039;re liable to get lost. Use the list or the [[Bugs|bug tracker]].&lt;br /&gt;
&lt;br /&gt;
== Blogs and related sites ==&lt;br /&gt;
Haydn Solomon&#039;s [http://www.linux-kvm.com linux-kvm] site, featuring forums and a blog&lt;br /&gt;
&lt;br /&gt;
Avi Kivity&#039;s [http://avikivity.blogspot.com blog] &lt;br /&gt;
&lt;br /&gt;
Anthony Liguori&#039;s [http://blog.codemonkey.ws blog] &lt;br /&gt;
&lt;br /&gt;
[http://virt.kernelnewbies.org/ Linux virtualization] wiki&lt;br /&gt;
&lt;br /&gt;
== Forums ==&lt;br /&gt;
&lt;br /&gt;
[http://forums.meulie.net/viewforum.php?f=43 KVM forum]&lt;/div&gt;</summary>
		<author><name>Miguel</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=MonitorProtocol&amp;diff=3040</id>
		<title>MonitorProtocol</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=MonitorProtocol&amp;diff=3040"/>
		<updated>2010-07-01T16:56:17Z</updated>

		<summary type="html">&lt;p&gt;Miguel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= QEMU Monitor Protocol =&lt;br /&gt;
&lt;br /&gt;
The QEMU Monitor Protocol (QMP) is a [http://www.json.org/ JSON]-based protocol which allows applications to communicate with QEMU&#039;s Monitor.&lt;br /&gt;
&lt;br /&gt;
QMP&#039;s main features are:&lt;br /&gt;
&lt;br /&gt;
* Lightweight, text-based, easy to parse data format&lt;br /&gt;
* Asynchronous messages support (ie. events)&lt;br /&gt;
* Capabilities Negotiation&lt;br /&gt;
* Stable API (starting with QEMU version 0.13)&lt;br /&gt;
&lt;br /&gt;
The [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP/README README] file has a simple introduction and the  [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP/qmp-spec.txt full specification] is recommended for application writers.&lt;br /&gt;
&lt;br /&gt;
== General Status ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;preview&#039;&#039;&#039; version of QMP is available in QEMU version 0.12. This means that QMP is still under development and there &#039;&#039;&#039;will&#039;&#039;&#039; be incompatible changes between QEMU 0.12 and QEMU 0.13.&lt;br /&gt;
&lt;br /&gt;
For more information about converted handlers, please check [[#Conversion Status]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
In the following examples, &#039;C&#039; stands for &#039;Client&#039; and &#039;S&#039; stands for &#039;Server&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Server Greeting ===&lt;br /&gt;
&lt;br /&gt;
 S: { &amp;quot;QMP&amp;quot;: { &amp;quot;version&amp;quot;: { &amp;quot;qemu&amp;quot;: &amp;quot;0.12.50&amp;quot;, &amp;quot;package&amp;quot;: &amp;quot;&amp;quot; }, &amp;quot;capabilities&amp;quot;: [] } }&lt;br /&gt;
&lt;br /&gt;
=== Query version ===&lt;br /&gt;
&lt;br /&gt;
 C: { &amp;quot;execute&amp;quot;: &amp;quot;query-version&amp;quot; }&lt;br /&gt;
 S: { &amp;quot;return&amp;quot;: { &amp;quot;qemu&amp;quot;: &amp;quot;0.12.50&amp;quot;, &amp;quot;package&amp;quot;: &amp;quot;&amp;quot;} }&lt;br /&gt;
&lt;br /&gt;
=== Eject a device ===&lt;br /&gt;
&lt;br /&gt;
 C: { &amp;quot;execute&amp;quot;: &amp;quot;eject&amp;quot;, &amp;quot;arguments&amp;quot;: { &amp;quot;device&amp;quot;: &amp;quot;ide1-cd0&amp;quot; } }&lt;br /&gt;
 S: {&amp;quot;return&amp;quot;: {}}&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
Main developers are [mailto:lcapitulino@redhat.com Luiz Capitulino] and [mailto:armbru@redhat.com Markus Armbruster], but all QMP-related discussions happen on the [http://lists.nongnu.org/mailman/listinfo/qemu-devel qemu-devel] mailing list.&lt;br /&gt;
&lt;br /&gt;
Next features, hot fixes and other patches are stored in the QMP unstable repository:&lt;br /&gt;
&lt;br /&gt;
http://repo.or.cz/w/qemu/qmp-unstable.git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: all branches in this repository are constantly &#039;&#039;rebased&#039;&#039; (master inclusive).&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== High Priority ===&lt;br /&gt;
&lt;br /&gt;
* do_device_add()/do_device_del() conversions (markus)&lt;br /&gt;
* do_netdev_add()/do_netdev_del() conversions (markus)&lt;br /&gt;
* do_blockdev_add()/do_blockdev_del() conversions (markus)&lt;br /&gt;
* Events Grouping (luiz)&lt;br /&gt;
* Make qmp-shell work again (luiz)&lt;br /&gt;
&lt;br /&gt;
* Self-description &amp;amp; High-level protocol documentation&lt;br /&gt;
* High-level internal documentation&lt;br /&gt;
* Better QObjects and QMP debug support&lt;br /&gt;
&lt;br /&gt;
=== Normal Priority ===&lt;br /&gt;
&lt;br /&gt;
* Convert all remaining commands to the QObject API&lt;br /&gt;
* Improve internal API, currently it&#039;s too [http://lists.gnu.org/archive/html/qemu-devel/2009-12/msg02537.html low-level]&lt;br /&gt;
* Array-based Monitor&#039;s command table&lt;br /&gt;
* Libqmp&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is no automated tool to test QMP correctness yet. Probably, the right thing to do is to integrate with [http://www.linux-kvm.org/page/KVM-Autotest kvm-autotest] but we still have to think how this should be done.&lt;br /&gt;
&lt;br /&gt;
Meanwhile, QMP testing is a low-level procedure which requires knowledge about the protocol and its implementation, so the first thing to do is to read the [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP/README README] and [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP/qmp-spec.txt spec] files.&lt;br /&gt;
&lt;br /&gt;
This section describes three ways of testing QMP:&lt;br /&gt;
&lt;br /&gt;
* By hand (difficult, only worth it if you&#039;re chasing a specific bug)&lt;br /&gt;
* qmp-shell script (automates part of the job)&lt;br /&gt;
* Libvirt integration (assumes familiarity with libvirt)&lt;br /&gt;
&lt;br /&gt;
=== By hand ===&lt;br /&gt;
&lt;br /&gt;
1. Start QMP on a TCP socket, so that telnet can be used&lt;br /&gt;
&lt;br /&gt;
 # qemu [...] -qmp tcp:localhost:4444,server&lt;br /&gt;
&lt;br /&gt;
2. Now, run telnet&lt;br /&gt;
&lt;br /&gt;
 $ telnet localhost 4444&lt;br /&gt;
&lt;br /&gt;
3. You should see the following prompt&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;QMP&amp;quot;: {&amp;quot;version&amp;quot;: {&amp;quot;qemu&amp;quot;: &amp;quot;0.12.50&amp;quot;, &amp;quot;package&amp;quot;: &amp;quot;&amp;quot;}, &amp;quot;capabilities&amp;quot;: []}}&lt;br /&gt;
&lt;br /&gt;
4. Now you can issue commands. For example, to get a list of QMP supported commands, run &#039;&#039;query-commands&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 { &amp;quot;execute&amp;quot;: &amp;quot;query-commands&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE (1):&#039;&#039;&#039; all &amp;quot;info&amp;quot; commands are available under QMP as &amp;quot;query-&amp;quot;, for example &amp;quot;info vnc&amp;quot; is &amp;quot;query-vnc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE (2):&#039;&#039;&#039; QMP doesn&#039;t have user documentation yet, this means that, to find out which arguments a command accepts or what&#039;s its output, you will have to either check the [http://git.savannah.gnu.org/cgit/qemu.git/tree/qemu-monitor.hx qemu-monitor.hx] file and/or the function which implements the command.&lt;br /&gt;
&lt;br /&gt;
=== qmp-shell script ===&lt;br /&gt;
&lt;br /&gt;
This script is available under the [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP QMP] directory in QEMU&#039;s source-tree. It automates a bit the testing work, as it can construct commands.&lt;br /&gt;
&lt;br /&gt;
1. Start QMP on a unix socket, like:&lt;br /&gt;
&lt;br /&gt;
 # qemu [...] -qmp unix:./qmp-sock,server&lt;br /&gt;
&lt;br /&gt;
2. Run the script&lt;br /&gt;
&lt;br /&gt;
 # qmp-shell ./qmp-sock&lt;br /&gt;
&lt;br /&gt;
3. You should get the following prompt&lt;br /&gt;
&lt;br /&gt;
 (QEMU)&lt;br /&gt;
&lt;br /&gt;
4. Now you can run commands. For example, let&#039;s change the VNC password:&lt;br /&gt;
&lt;br /&gt;
 (QEMU) change device=vnc target=password arg=&#039;1234&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: To find out what arguments a command accepts, you have to either check the [http://git.savannah.gnu.org/cgit/qemu.git/tree/qemu-monitor.hx qemu-monitor.hx] file and/or the function which implements the command.&lt;br /&gt;
&lt;br /&gt;
=== Libvirt ===&lt;br /&gt;
&lt;br /&gt;
Libvirt already has QMP support, but it&#039;s currently disable. This test procedure explains how to enable it and put libvirt to run on top of QMP.&lt;br /&gt;
&lt;br /&gt;
1. Install [http://lloyd.github.com/yajl yajl-devel] (If you&#039;re running Fedora 12 or above just do &#039;yum install yajl-devel&#039;)&lt;br /&gt;
&lt;br /&gt;
2. From a fresh checkout of [http://libvirt.org/git/?p=libvirt.git;a=summary libvirt master branch] run the following:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh --system --enable-compile-warnings=error&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE (1):&#039;&#039;&#039; The &#039;--system&#039; flag is a shortcut for compiling with the --prefix and other directories matching a system RPM build.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE (2):&#039;&#039;&#039; Make sure the final summary of autogen.sh tells you that it found the yajl library&lt;br /&gt;
&lt;br /&gt;
3. To enable QMP support, edit &#039;&#039;&#039;src/qemu/qemu_conf.c&#039;&#039;&#039; and find:&lt;br /&gt;
&lt;br /&gt;
 #if 0&lt;br /&gt;
    if (version &amp;gt;= 13000)&lt;br /&gt;
        flags |= QEMUD_CMD_FLAG_MONITOR_JSON;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
Change to &#039;#if 1&#039;, and change the version to 12000 so it detects your GIT build of QEMU&lt;br /&gt;
&lt;br /&gt;
4. Run &#039;make&#039; to build. There is no need to &#039;make install&#039; anything&lt;br /&gt;
especially since that would overwrite your RPM based install&lt;br /&gt;
&lt;br /&gt;
5. As root simply stop the current daemon &amp;amp; start the one you built&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/libvirtd stop&lt;br /&gt;
 $HOME/your/git/checkout/of/libvirt/daemon/libvirtd&lt;br /&gt;
&lt;br /&gt;
6. As root you can use the newly built virsh too&lt;br /&gt;
&lt;br /&gt;
 cd $HOME/your/git/checkout/of/libvirt/src&lt;br /&gt;
 ./virsh &amp;lt;BLAH&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conversion Status ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UPDATED&#039;&#039;&#039;: 2009-12-16&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|Command&lt;br /&gt;
|Info&lt;br /&gt;
|-&lt;br /&gt;
|Handlers&lt;br /&gt;
|62&lt;br /&gt;
|36&lt;br /&gt;
|-&lt;br /&gt;
|Converted&lt;br /&gt;
|19&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Percentage&lt;br /&gt;
|30%&lt;br /&gt;
|41%&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following tables have a per-function status. There is one table for &#039;&#039;command&#039;&#039; handlers and another one for &#039;&#039;info&#039;&#039; handlers.&lt;br /&gt;
&lt;br /&gt;
Status can be:&lt;br /&gt;
&lt;br /&gt;
* merged: already merged upstream&lt;br /&gt;
* partial: merged, but error handling is incomplete&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Handlers used by [http://libvirt.org Libvirt] are marked with &amp;lt;span style=&amp;quot;background-color:yellow&amp;quot;&amp;gt;yellow&amp;lt;/span&amp;gt;.  Handlers it is expected to use are marked &amp;lt;span style=&amp;quot;background-color:khaki&amp;quot;&amp;gt;khaki&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Command handlers ====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Handler name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Status&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Version&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Comments&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_policy()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_remove()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_reset()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_show()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_balloon()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_block_set_passwd()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_boot_set()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_change()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_closefd()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_commit()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_cont()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_cpu_set()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_cpu_set_nr()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|qemu-kvm only&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_delvm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_device_add()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_device_del()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_eject()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_gdbserver()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_getfd()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_help_cmd()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|as &#039;query-&#039; commands&lt;br /&gt;
|-&lt;br /&gt;
|do_inject_mce()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_inject_nmi()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_ioport_read()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_ioport_write()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_loadvm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_log()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_logfile()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_memory_dump()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_memory_save()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_migrate()&lt;br /&gt;
|partial&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_migrate_cancel()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_migrate_set_downtime()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_migrate_set_speed()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_mouse_button()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_mouse_move()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_mouse_set()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_netdev_add()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_netdev_del()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_pci_device_hot_remove()&lt;br /&gt;
|partial&lt;br /&gt;
|0.12&lt;br /&gt;
|legacy, use device_del instead&lt;br /&gt;
|-&lt;br /&gt;
|do_physical_memory_dump()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_physical_memory_save()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_print()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_quit()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_savevm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_screen_dump()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_sendkey()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_set_link()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_singlestep()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_stop()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_stop_capture()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_sum()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_system_powerdown()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_system_reset()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_usb_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|legacy, use device_add instead&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_usb_del()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|legacy, use device_del instead&lt;br /&gt;
|-&lt;br /&gt;
|do_watchdog_action()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_wav_capture()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|drive_hot_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|legacy, use blockdev_add, device_add instead&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|net_host_device_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|consider do_netdev_add() instead&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|net_host_device_remove()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|consider do_netdev_del() instead&lt;br /&gt;
|-&lt;br /&gt;
|net_slirp_hostfwd_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|net_slirp_hostfwd_remove()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|pci_device_hot_add()&lt;br /&gt;
|partial&lt;br /&gt;
|0.12&lt;br /&gt;
|legacy, use device_add, blockdev_add instead&lt;br /&gt;
|-&lt;br /&gt;
|do_blockdev_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|do_blockdev_del()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|do_chardev_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|do_chardev_del()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Info handlers ====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Handler name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Status&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Version&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Comments&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|bdrv_info()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|bdrv_info_stats()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_info_balloon()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_capture()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_commands()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_cpu_stats()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_info_cpus()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_history()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_hpet()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_jit()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_info_kvm()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_mice()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_info_migrate()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_name()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_network()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|legacy, use do_info_netdev()&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_info_netdev()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[http://wiki.qemu.org/Google_Summer_of_Code_2010/QMP Being worked on in SoC]&lt;br /&gt;
|-&lt;br /&gt;
|do_info_numa()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_profile()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot; &lt;br /&gt;
|do_info_qdm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_qtree()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_registers()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_roms()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_info_snapshots()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|lacks parent info, libvirt wants it&lt;br /&gt;
|- style=&amp;quot;background-color:khaki;&amp;quot;&lt;br /&gt;
|do_info_status()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_usernet()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_uuid()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_version()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_vnc()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_pci_info()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|libvirt uses this, but only with pre-0.12.x QEMU&lt;br /&gt;
|-&lt;br /&gt;
|irq_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|mem_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pcmcia_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pic_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|qemu_chr_info()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|tlb_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|usb_host_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|usb_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
This was the fourth proposal for a Monitor protocol, past discussions can be found in the following links:&lt;br /&gt;
&lt;br /&gt;
* http://www.mail-archive.com/qemu-devel@nongnu.org/msg14593.html&lt;br /&gt;
* http://lists.gnu.org/archive/html/qemu-devel/2009-01/msg00655.html&lt;br /&gt;
* http://lists.gnu.org/archive/html/qemu-devel/2009-06/msg01584.html&lt;/div&gt;</summary>
		<author><name>Miguel</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=MonitorProtocol&amp;diff=2968</id>
		<title>MonitorProtocol</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=MonitorProtocol&amp;diff=2968"/>
		<updated>2010-04-29T19:10:49Z</updated>

		<summary type="html">&lt;p&gt;Miguel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= QEMU Monitor Protocol =&lt;br /&gt;
&lt;br /&gt;
The QEMU Monitor Protocol (QMP) is a [http://www.json.org/ JSON]-based protocol which allows applications to communicate with QEMU&#039;s Monitor.&lt;br /&gt;
&lt;br /&gt;
QMP&#039;s main features are:&lt;br /&gt;
&lt;br /&gt;
* Lightweight, text-based, easy to parse data format&lt;br /&gt;
* Asynchronous messages support (ie. events)&lt;br /&gt;
* Capabilities Negotiation&lt;br /&gt;
* Stable API (starting with QEMU version 0.13)&lt;br /&gt;
&lt;br /&gt;
The [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP/README README] file has a simple introduction and the  [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP/qmp-spec.txt full specification] is recommended for application writers.&lt;br /&gt;
&lt;br /&gt;
== General Status ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;preview&#039;&#039;&#039; version of QMP is available in QEMU version 0.12. This means that QMP is still under development and there &#039;&#039;&#039;will&#039;&#039;&#039; be incompatible changes between QEMU 0.12 and QEMU 0.13.&lt;br /&gt;
&lt;br /&gt;
For more information about converted handlers, please check [[#Conversion Status]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
In the following examples, &#039;C&#039; stands for &#039;Client&#039; and &#039;S&#039; stands for &#039;Server&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Server Greeting ===&lt;br /&gt;
&lt;br /&gt;
 S: { &amp;quot;QMP&amp;quot;: { &amp;quot;version&amp;quot;: { &amp;quot;qemu&amp;quot;: &amp;quot;0.12.50&amp;quot;, &amp;quot;package&amp;quot;: &amp;quot;&amp;quot; }, &amp;quot;capabilities&amp;quot;: [] } }&lt;br /&gt;
&lt;br /&gt;
=== Query version ===&lt;br /&gt;
&lt;br /&gt;
 C: { &amp;quot;execute&amp;quot;: &amp;quot;query-version&amp;quot; }&lt;br /&gt;
 S: { &amp;quot;return&amp;quot;: { &amp;quot;qemu&amp;quot;: &amp;quot;0.12.50&amp;quot;, &amp;quot;package&amp;quot;: &amp;quot;&amp;quot;} }&lt;br /&gt;
&lt;br /&gt;
=== Eject a device ===&lt;br /&gt;
&lt;br /&gt;
 C: { &amp;quot;execute&amp;quot;: &amp;quot;eject&amp;quot;, &amp;quot;arguments&amp;quot;: { &amp;quot;device&amp;quot;: &amp;quot;ide1-cd0&amp;quot; } }&lt;br /&gt;
 S: {&amp;quot;return&amp;quot;: {}}&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
Main developers are [mailto:lcapitulino@redhat.com Luiz Capitulino] and [mailto:armbru@redhat.com Markus Armbruster], but all QMP-related discussions happen on the [http://lists.nongnu.org/mailman/listinfo/qemu-devel qemu-devel] mailing list.&lt;br /&gt;
&lt;br /&gt;
Next features, hot fixes and other patches are stored in the QMP unstable repository:&lt;br /&gt;
&lt;br /&gt;
http://repo.or.cz/w/qemu/qmp-unstable.git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: all branches in this repository are constantly &#039;&#039;rebased&#039;&#039; (master inclusive).&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== High Priority ===&lt;br /&gt;
&lt;br /&gt;
* do_device_add()/do_device_del() conversions (markus)&lt;br /&gt;
* do_netdev_add()/do_netdev_del() conversions (markus)&lt;br /&gt;
* do_blockdev_add()/do_blockdev_del() conversions (markus)&lt;br /&gt;
* Events Grouping (luiz)&lt;br /&gt;
* Make qmp-shell work again (luiz)&lt;br /&gt;
&lt;br /&gt;
* Self-description &amp;amp; High-level protocol documentation&lt;br /&gt;
* High-level internal documentation&lt;br /&gt;
* Better QObjects and QMP debug support&lt;br /&gt;
&lt;br /&gt;
=== Normal Priority ===&lt;br /&gt;
&lt;br /&gt;
* Convert all remaining commands to the QObject API&lt;br /&gt;
* Improve internal API, currently it&#039;s too [http://lists.gnu.org/archive/html/qemu-devel/2009-12/msg02537.html low-level]&lt;br /&gt;
* Array-based Monitor&#039;s command table&lt;br /&gt;
* Libqmp&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is no automated tool to test QMP correctness yet. Probably, the right thing to do is to integrate with [http://www.linux-kvm.org/page/KVM-Autotest kvm-autotest] but we still have to think how this should be done.&lt;br /&gt;
&lt;br /&gt;
Meanwhile, QMP testing is a low-level procedure which requires knowledge about the protocol and its implementation, so the first thing to do is to read the [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP/README README] and [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP/qmp-spec.txt spec] files.&lt;br /&gt;
&lt;br /&gt;
This section describes three ways of testing QMP:&lt;br /&gt;
&lt;br /&gt;
* By hand (difficult, only worth it if you&#039;re chasing a specific bug)&lt;br /&gt;
* qmp-shell script (automates part of the job)&lt;br /&gt;
* Libvirt integration (assumes familiarity with libvirt)&lt;br /&gt;
&lt;br /&gt;
=== By hand ===&lt;br /&gt;
&lt;br /&gt;
1. Start QMP on a TCP socket, so that telnet can be used&lt;br /&gt;
&lt;br /&gt;
 # qemu [...] -qmp tcp:localhost:4444,server&lt;br /&gt;
&lt;br /&gt;
2. Now, run telnet&lt;br /&gt;
&lt;br /&gt;
 $ telnet localhost 4444&lt;br /&gt;
&lt;br /&gt;
3. You should see the following prompt&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;QMP&amp;quot;: {&amp;quot;version&amp;quot;: {&amp;quot;qemu&amp;quot;: &amp;quot;0.12.50&amp;quot;, &amp;quot;package&amp;quot;: &amp;quot;&amp;quot;}, &amp;quot;capabilities&amp;quot;: []}}&lt;br /&gt;
&lt;br /&gt;
4. Now you can issue commands. For example, to get a list of QMP supported commands, run &#039;&#039;query-commands&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 { &amp;quot;execute&amp;quot;: &amp;quot;query-commands&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE (1):&#039;&#039;&#039; all &amp;quot;info&amp;quot; commands are available under QMP as &amp;quot;query-&amp;quot;, for example &amp;quot;info vnc&amp;quot; is &amp;quot;query-vnc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE (2):&#039;&#039;&#039; QMP doesn&#039;t have user documentation yet, this means that, to find out which arguments a command accepts or what&#039;s its output, you will have to either check the [http://git.savannah.gnu.org/cgit/qemu.git/tree/qemu-monitor.hx qemu-monitor.hx] file and/or the function which implements the command.&lt;br /&gt;
&lt;br /&gt;
=== qmp-shell script ===&lt;br /&gt;
&lt;br /&gt;
This script is available under the [http://git.savannah.gnu.org/cgit/qemu.git/tree/QMP QMP] directory in QEMU&#039;s source-tree. It automates a bit the testing work, as it can construct commands.&lt;br /&gt;
&lt;br /&gt;
1. Start QMP on a unix socket, like:&lt;br /&gt;
&lt;br /&gt;
 # qemu [...] -qmp unix:./qmp-sock,server&lt;br /&gt;
&lt;br /&gt;
2. Run the script&lt;br /&gt;
&lt;br /&gt;
 # qmp-shell ./qmp-sock&lt;br /&gt;
&lt;br /&gt;
3. You should get the following prompt&lt;br /&gt;
&lt;br /&gt;
 (QEMU)&lt;br /&gt;
&lt;br /&gt;
4. Now you can run commands. For example, let&#039;s change the VNC password:&lt;br /&gt;
&lt;br /&gt;
 (QEMU) change device=vnc target=password arg=&#039;1234&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: To find out what arguments a command accepts, you have to either check the [http://git.savannah.gnu.org/cgit/qemu.git/tree/qemu-monitor.hx qemu-monitor.hx] file and/or the function which implements the command.&lt;br /&gt;
&lt;br /&gt;
=== Libvirt ===&lt;br /&gt;
&lt;br /&gt;
Libvirt already has QMP support, but it&#039;s currently disable. This test procedure explains how to enable it and put libvirt to run on top of QMP.&lt;br /&gt;
&lt;br /&gt;
1. Install [http://lloyd.github.com/yajl yajl-devel] (If you&#039;re running Fedora 12 or above just do &#039;yum install yajl-devel&#039;)&lt;br /&gt;
&lt;br /&gt;
2. From a fresh checkout of [http://libvirt.org/git/?p=libvirt.git;a=summary libvirt master branch] run the following:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh --system --enable-compile-warnings=error&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE (1):&#039;&#039;&#039; The &#039;--system&#039; flag is a shortcut for compiling with the --prefix and other directories matching a system RPM build.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE (2):&#039;&#039;&#039; Make sure the final summary of autogen.sh tells you that it found the yajl library&lt;br /&gt;
&lt;br /&gt;
3. To enable QMP support, edit &#039;&#039;&#039;src/qemu/qemu_conf.c&#039;&#039;&#039; and find:&lt;br /&gt;
&lt;br /&gt;
 #if 0&lt;br /&gt;
    if (version &amp;gt;= 13000)&lt;br /&gt;
        flags |= QEMUD_CMD_FLAG_MONITOR_JSON;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
Change to &#039;#if 1&#039;, and change the version to 12000 so it detects your GIT build of QEMU&lt;br /&gt;
&lt;br /&gt;
4. Run &#039;make&#039; to build. There is no need to &#039;make install&#039; anything&lt;br /&gt;
especially since that would overwrite your RPM based install&lt;br /&gt;
&lt;br /&gt;
5. As root simply stop the current daemon &amp;amp; start the one you built&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/libvirtd stop&lt;br /&gt;
 $HOME/your/git/checkout/of/libvirt/daemon/libvirtd&lt;br /&gt;
&lt;br /&gt;
6. As root you can use the newly built virsh too&lt;br /&gt;
&lt;br /&gt;
 cd $HOME/your/git/checkout/of/libvirt/src&lt;br /&gt;
 ./virsh &amp;lt;BLAH&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conversion Status ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UPDATED&#039;&#039;&#039;: 2009-12-16&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|Command&lt;br /&gt;
|Info&lt;br /&gt;
|-&lt;br /&gt;
|Handlers&lt;br /&gt;
|62&lt;br /&gt;
|36&lt;br /&gt;
|-&lt;br /&gt;
|Converted&lt;br /&gt;
|19&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Percentage&lt;br /&gt;
|30%&lt;br /&gt;
|41%&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following tables have a per-function status. There is one table for &#039;&#039;command&#039;&#039; handlers and another one for &#039;&#039;info&#039;&#039; handlers.&lt;br /&gt;
&lt;br /&gt;
Status can be:&lt;br /&gt;
&lt;br /&gt;
* merged: already merged upstream&lt;br /&gt;
* partial: merged, but error handling is incomplete&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Handlers used by [http://libvirt.org Libvirt] are marked with yellow.&lt;br /&gt;
&lt;br /&gt;
==== Command handlers ====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Handler name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Status&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Version&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Comments&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_policy()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_remove()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_reset()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_acl_show()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_balloon()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_block_set_passwd()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_boot_set()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_change()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_closefd()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_commit()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_cont()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_cpu_set()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_delvm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_device_add()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_device_del()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_eject()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_gdbserver()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_getfd()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_help_cmd()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|as &#039;query-&#039; commands&lt;br /&gt;
|-&lt;br /&gt;
|do_inject_mce()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_inject_nmi()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_ioport_read()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_ioport_write()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_loadvm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_log()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_logfile()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_memory_dump()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_memory_save()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_migrate()&lt;br /&gt;
|partial&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_migrate_cancel()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_migrate_set_downtime()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_migrate_set_speed()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_mouse_button()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_mouse_move()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_mouse_set()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_pci_device_hot_remove()&lt;br /&gt;
|partial&lt;br /&gt;
|0.12&lt;br /&gt;
|legacy, use device_del instead&lt;br /&gt;
|-&lt;br /&gt;
|do_physical_memory_dump()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_physical_memory_save()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12.50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_print()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_quit()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_savevm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_screen_dump()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_sendkey()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_set_link()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_singlestep()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_stop()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_stop_capture()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_sum()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_system_powerdown()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_system_reset()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_usb_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|legacy, use device_add instead&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_usb_del()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|legacy, use device_del instead&lt;br /&gt;
|-&lt;br /&gt;
|do_watchdog_action()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_wav_capture()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|drive_hot_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|net_host_device_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|consider do_netdev_add() instead&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|net_host_device_remove()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|consider do_netdev_del() instead&lt;br /&gt;
|-&lt;br /&gt;
|net_slirp_hostfwd_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|net_slirp_hostfwd_remove()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|pci_device_hot_add()&lt;br /&gt;
|partial&lt;br /&gt;
|0.12&lt;br /&gt;
|legacy, use device_add instead&lt;br /&gt;
|-&lt;br /&gt;
|do_chardev_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|do_chardev_del()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|do_blockdev_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|do_blockdev_del()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|do_netdev_add()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|do_netdev_del()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|to be created&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Info handlers ====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Handler name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Status&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Version&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Comments&#039;&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|bdrv_info()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|bdrv_info_stats()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_info_balloon()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_capture()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_info_cpus()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_cpu_stats()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_history()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_hpet()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_jit()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_kvm()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_mice()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|do_info_migrate()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_name()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_network()&lt;br /&gt;
| [http://wiki.qemu.org/Google_Summer_of_Code_2010/QMP Being worked on in SoC]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_numa()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_profile()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_qdm()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_qtree()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_registers()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_roms()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_snapshots()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_status()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_usernet()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_uuid()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_version()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|do_info_vnc()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|irq_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|mem_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|pci_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pcmcia_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|pic_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|qemu_chr_info()&lt;br /&gt;
|merged&lt;br /&gt;
|0.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|tlb_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|usb_host_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;background-color:yellow;&amp;quot;&lt;br /&gt;
|usb_info()&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
This was the fourth proposal for a Monitor protocol, past discussions can be found in the following links:&lt;br /&gt;
&lt;br /&gt;
* http://www.mail-archive.com/qemu-devel@nongnu.org/msg14593.html&lt;br /&gt;
* http://lists.gnu.org/archive/html/qemu-devel/2009-01/msg00655.html&lt;br /&gt;
* http://lists.gnu.org/archive/html/qemu-devel/2009-06/msg01584.html&lt;/div&gt;</summary>
		<author><name>Miguel</name></author>
	</entry>
</feed>