On Mon, 20 Aug 2012 15:31:38 +0100 "Daniel P. Berrange" <berra...@redhat.com> wrote:
> From: "Daniel P. Berrange" <berra...@redhat.com> > > Add a 'query-target' QAPI command to allow management applications > to determine what target architecture a QEMU binary is emulating > without having to parse the binary name or -help output > > $ qmp-shell -p /tmp/qemu > (QEMU) query-target > { u'return': { u'arch': u'x86_64', u'bits': 64}} > > Signed-off-by: Daniel P. Berrange <berra...@redhat.com> > --- > arch_init.c | 11 +++++++++++ > qapi-schema.json | 25 +++++++++++++++++++++++++ > qmp-commands.hx | 5 +++++ > 3 files changed, 41 insertions(+) > > diff --git a/arch_init.c b/arch_init.c > index 9b46bfc..095672d 100644 > --- a/arch_init.c > +++ b/arch_init.c > @@ -1080,3 +1080,14 @@ int xen_available(void) > return 0; > #endif > } > + > + > +TargetInfo *qmp_query_target(Error **errp) > +{ > + TargetInfo *info = g_malloc0(sizeof(*info)); > + > + info->arch = g_strdup(TARGET_ARCH); > + info->bits = TARGET_PHYS_ADDR_BITS; > + > + return info; > +} > diff --git a/qapi-schema.json b/qapi-schema.json > index 3d2b2d1..f0e3fe0 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -2454,3 +2454,28 @@ > # > ## > { 'command': 'query-fdsets', 'returns': ['FdsetInfo'] } > + > +## > +# @TargetInfo: > +# > +# Information describing the QEMU target. > +# > +# @arch: the name of the target architecture (eg "x86_64", "i686", etc) Should be an enum, otherwise looks good. > +# > +# @bits: number of bits in physical address (eg 32 or 64) > +# > +# Since: 1.2.0 > +## > +{ 'type': 'TargetInfo', > + 'data': { 'arch': 'str', 'bits': 'int' } } > + > +## > +# @query-target: > +# > +# Return information about the target for this QEMU > +# > +# Returns: TargetInfo > +# > +# Since: 1.2.0 > +## > +{ 'command': 'query-target', 'returns': 'TargetInfo' } > diff --git a/qmp-commands.hx b/qmp-commands.hx > index 2ce4ce6..00d798f 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -2509,3 +2509,8 @@ EQMP > .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions, > }, > > + { > + .name = "query-target", > + .args_type = "", > + .mhandler.cmd_new = qmp_marshal_input_query_target, > + },