qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 2/2] full introspection support for QMP


From: Amos Kong
Subject: Re: [Qemu-devel] [PATCH v2 2/2] full introspection support for QMP
Date: Tue, 16 Jul 2013 19:04:40 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

On Tue, Jul 16, 2013 at 12:48:36PM +0200, Paolo Bonzini wrote:
> Il 16/07/2013 12:37, Amos Kong ha scritto:
> > So here I defined a 'DataObject' type in qapi-schema.json,
> > it's used to describe the dynamical dictionary/list/string.
> > 
> > { 'type': 'DataObject',
> >   'data': { '*key': 'str', '*type': 'str', '*data': ['DataObject'] } }
 
Hi Paolo,

> This is missing '*optional': 'bool'.  Also, how do you distinguish these:
> 
>   { 'command': 'query-tpm-types', 'returns': 'TpmType] }

do you mean 'TpmType' ? not 'TpmType]

        {
            "name": "query-tpm-types",
            "type": "Command",
            "returns": [
         >      {
         >          "type": "passthrough"
         >      }
            ]
        },

>   { 'command': 'query-tpm-types', 'returns': ['TpmType'] }

        {
            "name": "query-tpm-types",
            "type": "Command",
            "returns": [
         >      {
         >          "type": "TpmType",
         >          "data": [
         >              {
         >                  "type": "passthrough"
         >              }
         >          ]
         >      }
            ]
        },

> 
> Could it have to be like this?
> 
>    'data': { '*key': 'str', '*type': 'str', '*list': 'bool',
>              '*optional': 'bool',
>              '*data': ['DataObject'] } }

there are three conditions:
1) list
2) dict
3) string
 
> Can you document, in the commit message or the code,


    I added a document for QMP introspection support.
    (docs/qmp-full-introspection.txt)

    The DataObject is described in docs/qmp-full-introspection.txt in
    detail.

> how you avoid infinite loops (possible with optional or list fields)?


+We have four types (ImageInfo, BlockStats, PciDeviceInfo, SchemaData)
+that uses themself in their own define data directly or indirectly,
+we will not repeatedly extend them to avoid dead loop.

+/*
+ * Use a string to record the visit path, type index of each node
+ * will be saved to the string, indexes are split by ':'.
+ */

related functions:
 pop_id()
 push_id()

The detail needs to be added to qmp-full-introspection.txt
 
> Paolo
> 
> > Not all the keys in data will be used.
> >  # List: type
> >  # Dict: key, type
> >  # nested List: type, data
> >  # nested Dict: key, type, data
> > 
> > The DataObject is described in docs/qmp-full-introspection.txt in
> > detail.
> > 
> > The following content gives an example of query-tpm-types:
> > 
> >  ## Define example in qapi-schema.json:
> > 
> >  { 'enum': 'TpmType', 'data': [ 'passthrough' ] }
> >  { 'command': 'query-tpm-types', 'returns': ['TpmType'] }
> > 
> >  ## Returned description:
> > 
> >  {
> >      "name": "query-tpm-types",
> >      "type": "Command",
> >      "returns": [
> >          {
> >              "type": "TpmType",
> >              "data": [
> >                  {
> >                      "type": "passthrough"
> >                  }
> >              ]
> >          }
> >      ]
> >  },

-- 
                        Amos.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]