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) +# +# @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, + }, -- 1.7.11.2