[Qemu-devel] [PATCH] qapi: add 'query-target' command to return target arch/bit size (v2)

2012-08-22 Thread Anthony Liguori
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)

2012-08-22 Thread Daniel P. Berrange
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)

2012-08-22 Thread Eric Blake
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)

2012-08-22 Thread Luiz Capitulino
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,
 +},