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: Mon, 23 Dec 2013 15:15:03 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

On Mon, Dec 23, 2013 at 02:32:46PM +0800, Wenchao Xia wrote:
> Hi, Amos
> 
> >(resend without big attachment)
> >
> >Hello Eric, other
> >
> >We had "command, enumeration, type, unionobj" in Eric suggested DataObject
> >union, it's helpful for us to provide meaningful metadata in the output.
> >but there still exists some problem.
> >
> >We should describe some arbitrary data struct, I would like to call it 
> >"undefined struct"
> >
>   If user have defined an arbitrary or embbed data struct, I think it
> is better leave as it is, instead of generate a new struct for it.

I don't really generate a new struct for it, just try the arbitrary
data as an abstract 'undefined' struct.

In the output, it's "leave as it is".
 
> Since qapi-visit.c and qapi-types.c doesn't have a "undefined" struct
> for it now, it is a bit risk to do it only in QMP introspection. Maybe
> leave it now, and support it when we found it is really useful?(and add
> it in qapi-visit.c and qapi-types.c correspondly)
> 
> >eg 1:
> >   { 'type': 'VersionInfo',
> >     'data': {'qemu': {'major': 'int', 'minor': 'int', 'micro': 'int'},
> >              'package': 'str'} }
> >   it's same as:
> >   { 'type': 'newtype',
> >     'data': {'major': 'int', 'minor': 'int', 'micro': 'int'} }
> >   { 'type': 'VersionInfo',
> >     'data': { 'qemu': 'newtype', 'package': 'str'} }
> >
> >   The difference between original 'DataObjectType' and 
> > 'DataObjectUndefinedStruct'
> >   is that we don't have 'name' for the DataObject union for undefined 
> > struct.
> >   so I set the 'name' item in DataObjectBase to be optional.
> >
> >eg 2:
> >   { 'command': 'human-monitor-command',
> >   'data': {'command-line': 'str', '*cpu-index': 'int'},
> >   'returns': 'str' }
> >   ... 'returns': ['RxFilterInfo'] }
> >   ... 'returns': 'ChardevReturn' }
> >
> >   We returns str (native type), list or extended dict here. Sometimes we
> >   returns a defined type, but it doesn't need to be extended. And we need
> >   to describe this kind of data (type str, dict or list) by "DataObject"
> >   in schema definition of DataObject** type.
> >
> >   So I added a "'reference-type': 'String'" in DataObject union.
> >   list, dict will still be described by "DataObjectType"
> >
>  I guess you want to tip what type may be returned? It seems a bit too
> agressive, since the qapi-schema.json didn't tip that those types may
> be returned.

In command schema, the value of 'returns' tips the model of return data.
It can be string(defined type/union/enum/etc) or undefined list/dict.

> >You can find the draft patches here:
> >   https://github.com/kongove/qemu/commits/qmp-introspection
> >I will post the V3 when I finish the cleanup.

-- 
                        Amos.



reply via email to

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