[Qemu-devel] [PATCH] qapi: add 'query-target' command to return target arch/bit size (v2)
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' }} Signed-off-by: Daniel P. Berrange berra...@redhat.com Signed-off-by: Anthony Liguori aligu...@us.ibm.com --- v1 - v2 (aliguori) - remove 'bits' field - switch command to return an enum --- arch_init.c | 11 +++ configure|7 ++- qapi-schema.json | 39 +++ qmp-commands.hx |5 + 4 files changed, 61 insertions(+), 1 deletions(-) diff --git a/arch_init.c b/arch_init.c index 9b46bfc..5a1173e 100644 --- a/arch_init.c +++ b/arch_init.c @@ -44,6 +44,7 @@ #include exec-memory.h #include hw/pcspk.h #include qemu/page_cache.h +#include qmp-commands.h #ifdef DEBUG_ARCH_INIT #define DPRINTF(fmt, ...) \ @@ -1080,3 +1081,13 @@ int xen_available(void) return 0; #endif } + + +TargetInfo *qmp_query_target(Error **errp) +{ +TargetInfo *info = g_malloc0(sizeof(*info)); + +info-arch = TARGET_TYPE; + +return info; +} diff --git a/configure b/configure index 60d266f..d97fd81 100755 --- a/configure +++ b/configure @@ -3834,14 +3834,19 @@ case $target_arch2 in ;; esac +upper() { +echo $@| LC_ALL=C tr '[a-z]' '[A-Z]' +} + echo TARGET_SHORT_ALIGNMENT=$target_short_alignment $config_target_mak echo TARGET_INT_ALIGNMENT=$target_int_alignment $config_target_mak echo TARGET_LONG_ALIGNMENT=$target_long_alignment $config_target_mak echo TARGET_LLONG_ALIGNMENT=$target_llong_alignment $config_target_mak echo TARGET_ARCH=$TARGET_ARCH $config_target_mak -target_arch_name=`echo $TARGET_ARCH | LC_ALL=C tr '[a-z]' '[A-Z]'` +target_arch_name=`upper $TARGET_ARCH` echo TARGET_$target_arch_name=y $config_target_mak echo TARGET_ARCH2=$target_arch2 $config_target_mak +echo TARGET_TYPE=TARGET_TYPE_`upper $target_arch2` $config_target_mak echo TARGET_BASE_ARCH=$TARGET_BASE_ARCH $config_target_mak if [ $TARGET_ABI_DIR = ]; then TARGET_ABI_DIR=$TARGET_ARCH diff --git a/qapi-schema.json b/qapi-schema.json index 3d2b2d1..72b3c4d 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -2454,3 +2454,42 @@ # ## { 'command': 'query-fdsets', 'returns': ['FdsetInfo'] } + +## +# @TargetType +# +# Target CPU emulation type +# +# These parameters correspond to the softmmu binary CPU name that is currently +# running. +# +# Since: 1.2.0 +## +{ 'enum': 'TargetType', + 'data': [ 'alpha', 'arm', 'cris', 'i386', 'lm32', 'm68k', 'microblazeel', +'microblaze', 'mips64el', 'mips64', 'mipsel', 'mips', 'or32', +'ppc64', 'ppcemb', 'ppc', 's390x', 'sh4eb', 'sh4', 'sparc64', +'sparc', 'unicore32', 'x86_64', 'xtensaeb', 'xtensa' ] } + +## +# @TargetInfo: +# +# Information describing the QEMU target. +# +# @arch: the target architecture (eg x86_64, i386, etc) +# +# Since: 1.2.0 +## +{ 'type': 'TargetInfo', + 'data': { 'arch': 'TargetType' } } + +## +# @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.5.4
Re: [Qemu-devel] [PATCH] qapi: add 'query-target' command to return target arch/bit size (v2)
You can remove '/bit size' in the commit message 1st line. On Wed, Aug 22, 2012 at 10:09:38AM -0500, Anthony Liguori 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' }} Signed-off-by: Daniel P. Berrange berra...@redhat.com Signed-off-by: Anthony Liguori aligu...@us.ibm.com --- v1 - v2 (aliguori) - remove 'bits' field - switch command to return an enum --- arch_init.c | 11 +++ configure|7 ++- qapi-schema.json | 39 +++ qmp-commands.hx |5 + 4 files changed, 61 insertions(+), 1 deletions(-) diff --git a/arch_init.c b/arch_init.c index 9b46bfc..5a1173e 100644 --- a/arch_init.c +++ b/arch_init.c @@ -44,6 +44,7 @@ #include exec-memory.h #include hw/pcspk.h #include qemu/page_cache.h +#include qmp-commands.h #ifdef DEBUG_ARCH_INIT #define DPRINTF(fmt, ...) \ @@ -1080,3 +1081,13 @@ int xen_available(void) return 0; #endif } + + +TargetInfo *qmp_query_target(Error **errp) +{ +TargetInfo *info = g_malloc0(sizeof(*info)); + +info-arch = TARGET_TYPE; + +return info; +} diff --git a/configure b/configure index 60d266f..d97fd81 100755 --- a/configure +++ b/configure @@ -3834,14 +3834,19 @@ case $target_arch2 in ;; esac +upper() { +echo $@| LC_ALL=C tr '[a-z]' '[A-Z]' +} + echo TARGET_SHORT_ALIGNMENT=$target_short_alignment $config_target_mak echo TARGET_INT_ALIGNMENT=$target_int_alignment $config_target_mak echo TARGET_LONG_ALIGNMENT=$target_long_alignment $config_target_mak echo TARGET_LLONG_ALIGNMENT=$target_llong_alignment $config_target_mak echo TARGET_ARCH=$TARGET_ARCH $config_target_mak -target_arch_name=`echo $TARGET_ARCH | LC_ALL=C tr '[a-z]' '[A-Z]'` +target_arch_name=`upper $TARGET_ARCH` echo TARGET_$target_arch_name=y $config_target_mak echo TARGET_ARCH2=$target_arch2 $config_target_mak +echo TARGET_TYPE=TARGET_TYPE_`upper $target_arch2` $config_target_mak echo TARGET_BASE_ARCH=$TARGET_BASE_ARCH $config_target_mak if [ $TARGET_ABI_DIR = ]; then TARGET_ABI_DIR=$TARGET_ARCH diff --git a/qapi-schema.json b/qapi-schema.json index 3d2b2d1..72b3c4d 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -2454,3 +2454,42 @@ # ## { 'command': 'query-fdsets', 'returns': ['FdsetInfo'] } + +## +# @TargetType +# +# Target CPU emulation type +# +# These parameters correspond to the softmmu binary CPU name that is currently +# running. +# +# Since: 1.2.0 +## +{ 'enum': 'TargetType', + 'data': [ 'alpha', 'arm', 'cris', 'i386', 'lm32', 'm68k', 'microblazeel', +'microblaze', 'mips64el', 'mips64', 'mipsel', 'mips', 'or32', +'ppc64', 'ppcemb', 'ppc', 's390x', 'sh4eb', 'sh4', 'sparc64', +'sparc', 'unicore32', 'x86_64', 'xtensaeb', 'xtensa' ] } + +## +# @TargetInfo: +# +# Information describing the QEMU target. +# +# @arch: the target architecture (eg x86_64, i386, etc) +# +# Since: 1.2.0 +## +{ 'type': 'TargetInfo', + 'data': { 'arch': 'TargetType' } } + +## +# @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, +}, The changes look fine to me. Daniel -- |: http://berrange.com -o-http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
Re: [Qemu-devel] [PATCH] qapi: add 'query-target' command to return target arch/bit size (v2)
On 08/22/2012 09:09 AM, Anthony Liguori 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' }} Signed-off-by: Daniel P. Berrange berra...@redhat.com Signed-off-by: Anthony Liguori aligu...@us.ibm.com --- + +## +# @TargetInfo: +# +# Information describing the QEMU target. +# +# @arch: the target architecture (eg x86_64, i386, etc) Missed my v1 comment that 'eg' is misspelled (would be 'e.g.'), and with my recommendation for an alternate wording: @arch: the target architecture (such as x86_64 or i686) -- Eric Blake ebl...@redhat.com+1-919-301-3266 Libvirt virtualization library http://libvirt.org signature.asc Description: OpenPGP digital signature
Re: [Qemu-devel] [PATCH] qapi: add 'query-target' command to return target arch/bit size (v2)
On Wed, 22 Aug 2012 10:09:38 -0500 Anthony Liguori aligu...@us.ibm.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' }} Signed-off-by: Daniel P. Berrange berra...@redhat.com Signed-off-by: Anthony Liguori aligu...@us.ibm.com Reviewed-by: Luiz Capitulino lcapitul...@redhat.com --- v1 - v2 (aliguori) - remove 'bits' field - switch command to return an enum --- arch_init.c | 11 +++ configure|7 ++- qapi-schema.json | 39 +++ qmp-commands.hx |5 + 4 files changed, 61 insertions(+), 1 deletions(-) diff --git a/arch_init.c b/arch_init.c index 9b46bfc..5a1173e 100644 --- a/arch_init.c +++ b/arch_init.c @@ -44,6 +44,7 @@ #include exec-memory.h #include hw/pcspk.h #include qemu/page_cache.h +#include qmp-commands.h #ifdef DEBUG_ARCH_INIT #define DPRINTF(fmt, ...) \ @@ -1080,3 +1081,13 @@ int xen_available(void) return 0; #endif } + + +TargetInfo *qmp_query_target(Error **errp) +{ +TargetInfo *info = g_malloc0(sizeof(*info)); + +info-arch = TARGET_TYPE; + +return info; +} diff --git a/configure b/configure index 60d266f..d97fd81 100755 --- a/configure +++ b/configure @@ -3834,14 +3834,19 @@ case $target_arch2 in ;; esac +upper() { +echo $@| LC_ALL=C tr '[a-z]' '[A-Z]' +} + echo TARGET_SHORT_ALIGNMENT=$target_short_alignment $config_target_mak echo TARGET_INT_ALIGNMENT=$target_int_alignment $config_target_mak echo TARGET_LONG_ALIGNMENT=$target_long_alignment $config_target_mak echo TARGET_LLONG_ALIGNMENT=$target_llong_alignment $config_target_mak echo TARGET_ARCH=$TARGET_ARCH $config_target_mak -target_arch_name=`echo $TARGET_ARCH | LC_ALL=C tr '[a-z]' '[A-Z]'` +target_arch_name=`upper $TARGET_ARCH` echo TARGET_$target_arch_name=y $config_target_mak echo TARGET_ARCH2=$target_arch2 $config_target_mak +echo TARGET_TYPE=TARGET_TYPE_`upper $target_arch2` $config_target_mak echo TARGET_BASE_ARCH=$TARGET_BASE_ARCH $config_target_mak if [ $TARGET_ABI_DIR = ]; then TARGET_ABI_DIR=$TARGET_ARCH diff --git a/qapi-schema.json b/qapi-schema.json index 3d2b2d1..72b3c4d 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -2454,3 +2454,42 @@ # ## { 'command': 'query-fdsets', 'returns': ['FdsetInfo'] } + +## +# @TargetType +# +# Target CPU emulation type +# +# These parameters correspond to the softmmu binary CPU name that is currently +# running. +# +# Since: 1.2.0 +## +{ 'enum': 'TargetType', + 'data': [ 'alpha', 'arm', 'cris', 'i386', 'lm32', 'm68k', 'microblazeel', +'microblaze', 'mips64el', 'mips64', 'mipsel', 'mips', 'or32', +'ppc64', 'ppcemb', 'ppc', 's390x', 'sh4eb', 'sh4', 'sparc64', +'sparc', 'unicore32', 'x86_64', 'xtensaeb', 'xtensa' ] } + +## +# @TargetInfo: +# +# Information describing the QEMU target. +# +# @arch: the target architecture (eg x86_64, i386, etc) +# +# Since: 1.2.0 +## +{ 'type': 'TargetInfo', + 'data': { 'arch': 'TargetType' } } + +## +# @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, +},