From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42030) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VuzjU-0000db-Op for qemu-devel@nongnu.org; Mon, 23 Dec 2013 02:15:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VuzjK-00056b-PJ for qemu-devel@nongnu.org; Mon, 23 Dec 2013 02:15:20 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33209) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VuzjK-00056P-IE for qemu-devel@nongnu.org; Mon, 23 Dec 2013 02:15:10 -0500 Date: Mon, 23 Dec 2013 15:15:03 +0800 From: Amos Kong Message-ID: <20131223071503.GA28470@amosk.info> References: <1373971062-28909-1-git-send-email-akong@redhat.com> <1373971062-28909-3-git-send-email-akong@redhat.com> <51E9B81C.2090105@redhat.com> <20131127023217.GA6629@amosk.info> <20131220110001.GC2890@amosk.info> <20131220115705.GD2890@amosk.info> <52B7D90E.50400@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52B7D90E.50400@linux.vnet.ibm.com> Subject: Re: [Qemu-devel] [PATCH v2 2/2] full introspection support for QMP List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wenchao Xia Cc: "kwolf@redhat.com" , mdroth@linux.vnet.ibm.com, qemu-devel@nongnu.org, lcapitulino@redhat.com, qiaonuohan@cn.fujitsu.com, pbonzini@redhat.com 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.