-------------  start  -----------------

Signed-off-by: Amos Kong <akong@redhat.com>
qapi: introduce DataObject to describe dynamic structs

Signed-off-by: Amos Kong <akong@redhat.com>
doc: introduce qmp-full-introspection.txt

This patch addes a document about QMP full introspection support
(docs/qmp-full-introspection.txt), it helps to use the new interface
and understand the abstract method in describing the dynamic struct.

Signed-off-by: Amos Kong <akong@redhat.com>
qapi: add qapi-introspect.py code generator

This is a code generator for qapi introspection. It will generate
qapi-introspect.h, it contains a dictionary table of qapi schema.
The table will be used to dump schema information to management.

The $(prefix) is used to as a namespace to keep the generated code
from one schema/code-generation separated from others so code and
be generated from multiple schemas with clobbering previously
created code.

Signed-off-by: Amos Kong <akong@redhat.com>
qmp: full introspection support for QMP

This patch introduces a new monitor command to query QMP schema
information, the return data is a range of schema structs, which
contains the useful metadata to help management to check supported
features, QMP commands detail, etc.

It parses all json definition in qapi-schema.json, and generate a
dynamic struct tree, QMP infrastructure will convert the tree to
json string and return to QMP client.

I defined a 'DataObject' union in qapi-schema.json, it's used to
describe the dynamic data struct.

TODO:
Wenchao Xia is working to convert QMP events to qapi-schema.json,
then event can also be queried by this interface.

I will introduce another command 'query-qga-schema' to query QGA
schema information, it's easy to add this support based on this
patch.

Signed-off-by: Amos Kong <akong@redhat.com>
update docs/qmp-full-introspection.txt

Signed-off-by: Amos Kong <akong@redhat.com>