[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 34/39] qapi: Drop inline nested struct in query-v
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PATCH v7 34/39] qapi: Drop inline nested struct in query-version |
Date: |
Wed, 29 Apr 2015 07:06:49 -0600 |
A future patch will be using a 'name':{dictionary} entry in the
QAPI schema to specify a default value for an optional argument
(see previous commit message for more details why); but existing
use of inline nested structs conflicts with that goal. This patch
fixes one of only two commands relying on nested types, by
breaking the nesting into an explicit type; it means that the
type is now boxed instead of unboxed in C code, but the QMP wire
format is unaffected by this change.
Prefer the safer g_new0() while making the conversion.
Signed-off-by: Eric Blake <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
---
hmp.c | 2 +-
qapi/common.json | 26 +++++++++++++++++++-------
qmp.c | 9 +++++----
3 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/hmp.c b/hmp.c
index d85d913..97d9c2c 100644
--- a/hmp.c
+++ b/hmp.c
@@ -60,7 +60,7 @@ void hmp_info_version(Monitor *mon, const QDict *qdict)
info = qmp_query_version(NULL);
monitor_printf(mon, "%" PRId64 ".%" PRId64 ".%" PRId64 "%s\n",
- info->qemu.major, info->qemu.minor, info->qemu.micro,
+ info->qemu->major, info->qemu->minor, info->qemu->micro,
info->package);
qapi_free_VersionInfo(info);
diff --git a/qapi/common.json b/qapi/common.json
index 12431c6..bad56bf 100644
--- a/qapi/common.json
+++ b/qapi/common.json
@@ -29,15 +29,28 @@
'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }
##
+# @VersionTriple
+#
+# A three-part version number.
+#
+# @qemu.major: The major version number.
+#
+# @qemu.minor: The minor version number.
+#
+# @qemu.micro: The micro version number.
+#
+# Since: 2.4
+##
+{ 'struct': 'VersionTriple',
+ 'data': {'major': 'int', 'minor': 'int', 'micro': 'int'} }
+
+
+##
# @VersionInfo:
#
# A description of QEMU's version.
#
-# @qemu.major: The major version of QEMU
-#
-# @qemu.minor: The minor version of QEMU
-#
-# @qemu.micro: The micro version of QEMU. By current convention, a micro
+# @qemu: The version of QEMU. By current convention, a micro
# version of 50 signifies a development branch. A micro version
# greater than or equal to 90 signifies a release candidate for
# the next minor version. A micro version of less than 50
@@ -51,8 +64,7 @@
# Since: 0.14.0
##
{ 'struct': 'VersionInfo',
- 'data': {'qemu': {'major': 'int', 'minor': 'int', 'micro': 'int'},
- 'package': 'str'} }
+ 'data': {'qemu': 'VersionTriple', 'package': 'str'} }
##
# @query-version:
diff --git a/qmp.c b/qmp.c
index e6c7050..3f5dfe3 100644
--- a/qmp.c
+++ b/qmp.c
@@ -45,15 +45,16 @@ NameInfo *qmp_query_name(Error **errp)
VersionInfo *qmp_query_version(Error **errp)
{
- VersionInfo *info = g_malloc0(sizeof(*info));
+ VersionInfo *info = g_new0(VersionInfo, 1);
const char *version = QEMU_VERSION;
char *tmp;
- info->qemu.major = strtol(version, &tmp, 10);
+ info->qemu = g_new0(VersionTriple, 1);
+ info->qemu->major = strtol(version, &tmp, 10);
tmp++;
- info->qemu.minor = strtol(tmp, &tmp, 10);
+ info->qemu->minor = strtol(tmp, &tmp, 10);
tmp++;
- info->qemu.micro = strtol(tmp, &tmp, 10);
+ info->qemu->micro = strtol(tmp, &tmp, 10);
info->package = g_strdup(QEMU_PKGVERSION);
return info;
--
2.1.0
- [Qemu-devel] [PATCH v7 18/39] qapi: Better error messages for bad expressions, (continued)
- [Qemu-devel] [PATCH v7 18/39] qapi: Better error messages for bad expressions, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 13/39] qapi: Segregate anonymous unions into alternates in generator, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 17/39] qapi: Add some expr tests, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 33/39] qapi: Drop tests for inline nested structs, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 23/39] qapi: Add some type check tests, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 36/39] qapi: Drop support for inline nested types, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 25/39] qapi: Require valid names, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 31/39] qapi: Forbid 'type' in schema, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 35/39] qapi: Drop inline nested structs in query-pci, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 20/39] qapi: Better error messages for duplicated expressions, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 34/39] qapi: Drop inline nested struct in query-version,
Eric Blake <=
- [Qemu-devel] [PATCH v7 30/39] qapi: Use 'struct' instead of 'type' in schema, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 37/39] qapi: Tweak doc references to QMP when QGA is also meant, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 24/39] qapi: More rigourous checking of types, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 38/39] qapi: Support (subset of) \u escapes in strings, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 28/39] qapi: Prefer 'struct' over 'type' in generator, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 32/39] qapi: Merge UserDefTwo and UserDefNested in tests, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 39/39] qapi: Check for member name conflicts with a base class, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 04/39] qapi: Fix generation of 'size' builtin type, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 05/39] qapi: Require ASCII in schema, Eric Blake, 2015/04/29
- [Qemu-devel] [PATCH v7 01/39] qapi: Add copyright declaration on docs, Eric Blake, 2015/04/29