qapi: Convert query-version
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
48a32bedfe
commit
b9c15f16d7
13
hmp.c
13
hmp.c
|
@ -24,3 +24,16 @@ void hmp_info_name(Monitor *mon)
|
||||||
}
|
}
|
||||||
qapi_free_NameInfo(info);
|
qapi_free_NameInfo(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void hmp_info_version(Monitor *mon)
|
||||||
|
{
|
||||||
|
VersionInfo *info;
|
||||||
|
|
||||||
|
info = qmp_query_version(NULL);
|
||||||
|
|
||||||
|
monitor_printf(mon, "%" PRId64 ".%" PRId64 ".%" PRId64 "%s\n",
|
||||||
|
info->qemu.major, info->qemu.minor, info->qemu.micro,
|
||||||
|
info->package);
|
||||||
|
|
||||||
|
qapi_free_VersionInfo(info);
|
||||||
|
}
|
||||||
|
|
1
hmp.h
1
hmp.h
|
@ -18,5 +18,6 @@
|
||||||
#include "qapi-types.h"
|
#include "qapi-types.h"
|
||||||
|
|
||||||
void hmp_info_name(Monitor *mon);
|
void hmp_info_name(Monitor *mon);
|
||||||
|
void hmp_info_version(Monitor *mon);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
46
monitor.c
46
monitor.c
|
@ -731,37 +731,6 @@ help:
|
||||||
help_cmd(mon, "info");
|
help_cmd(mon, "info");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_info_version_print(Monitor *mon, const QObject *data)
|
|
||||||
{
|
|
||||||
QDict *qdict;
|
|
||||||
QDict *qemu;
|
|
||||||
|
|
||||||
qdict = qobject_to_qdict(data);
|
|
||||||
qemu = qdict_get_qdict(qdict, "qemu");
|
|
||||||
|
|
||||||
monitor_printf(mon, "%" PRId64 ".%" PRId64 ".%" PRId64 "%s\n",
|
|
||||||
qdict_get_int(qemu, "major"),
|
|
||||||
qdict_get_int(qemu, "minor"),
|
|
||||||
qdict_get_int(qemu, "micro"),
|
|
||||||
qdict_get_str(qdict, "package"));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void do_info_version(Monitor *mon, QObject **ret_data)
|
|
||||||
{
|
|
||||||
const char *version = QEMU_VERSION;
|
|
||||||
int major = 0, minor = 0, micro = 0;
|
|
||||||
char *tmp;
|
|
||||||
|
|
||||||
major = strtol(version, &tmp, 10);
|
|
||||||
tmp++;
|
|
||||||
minor = strtol(tmp, &tmp, 10);
|
|
||||||
tmp++;
|
|
||||||
micro = strtol(tmp, &tmp, 10);
|
|
||||||
|
|
||||||
*ret_data = qobject_from_jsonf("{ 'qemu': { 'major': %d, 'minor': %d, \
|
|
||||||
'micro': %d }, 'package': %s }", major, minor, micro, QEMU_PKGVERSION);
|
|
||||||
}
|
|
||||||
|
|
||||||
static QObject *get_cmd_dict(const char *name)
|
static QObject *get_cmd_dict(const char *name)
|
||||||
{
|
{
|
||||||
const char *p;
|
const char *p;
|
||||||
|
@ -2872,8 +2841,7 @@ static const mon_cmd_t info_cmds[] = {
|
||||||
.args_type = "",
|
.args_type = "",
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show the version of QEMU",
|
.help = "show the version of QEMU",
|
||||||
.user_print = do_info_version_print,
|
.mhandler.info = hmp_info_version,
|
||||||
.mhandler.info_new = do_info_version,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "network",
|
.name = "network",
|
||||||
|
@ -3171,14 +3139,6 @@ static const mon_cmd_t qmp_cmds[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const mon_cmd_t qmp_query_cmds[] = {
|
static const mon_cmd_t qmp_query_cmds[] = {
|
||||||
{
|
|
||||||
.name = "version",
|
|
||||||
.args_type = "",
|
|
||||||
.params = "",
|
|
||||||
.help = "show the version of QEMU",
|
|
||||||
.user_print = do_info_version_print,
|
|
||||||
.mhandler.info_new = do_info_version,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
.name = "commands",
|
.name = "commands",
|
||||||
.args_type = "",
|
.args_type = "",
|
||||||
|
@ -5185,9 +5145,9 @@ void monitor_resume(Monitor *mon)
|
||||||
|
|
||||||
static QObject *get_qmp_greeting(void)
|
static QObject *get_qmp_greeting(void)
|
||||||
{
|
{
|
||||||
QObject *ver;
|
QObject *ver = NULL;
|
||||||
|
|
||||||
do_info_version(NULL, &ver);
|
qmp_marshal_input_query_version(NULL, NULL, &ver);
|
||||||
return qobject_from_jsonf("{'QMP':{'version': %p,'capabilities': []}}",ver);
|
return qobject_from_jsonf("{'QMP':{'version': %p,'capabilities': []}}",ver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,3 +23,40 @@
|
||||||
# Since 0.14.0
|
# Since 0.14.0
|
||||||
##
|
##
|
||||||
{ 'command': 'query-name', 'returns': 'NameInfo' }
|
{ 'command': 'query-name', 'returns': 'NameInfo' }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @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
|
||||||
|
# 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
|
||||||
|
# signifies a stable release.
|
||||||
|
#
|
||||||
|
# @package: QEMU will always set this field to an empty string. Downstream
|
||||||
|
# versions of QEMU should set this to a non-empty string. The
|
||||||
|
# exact format depends on the downstream however it highly
|
||||||
|
# recommended that a unique name is used.
|
||||||
|
#
|
||||||
|
# Since: 0.14.0
|
||||||
|
##
|
||||||
|
{ 'type': 'VersionInfo',
|
||||||
|
'data': {'qemu': {'major': 'int', 'minor': 'int', 'micro': 'int'},
|
||||||
|
'package': 'str'} }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @query-version:
|
||||||
|
#
|
||||||
|
# Returns the current version of QEMU.
|
||||||
|
#
|
||||||
|
# Returns: A @VersionInfo object describing the current version of QEMU.
|
||||||
|
#
|
||||||
|
# Since: 0.14.0
|
||||||
|
##
|
||||||
|
{ 'command': 'query-version', 'returns': 'VersionInfo' }
|
||||||
|
|
|
@ -1053,6 +1053,12 @@ Example:
|
||||||
|
|
||||||
EQMP
|
EQMP
|
||||||
|
|
||||||
|
{
|
||||||
|
.name = "query-version",
|
||||||
|
.args_type = "",
|
||||||
|
.mhandler.cmd_new = qmp_marshal_input_query_version,
|
||||||
|
},
|
||||||
|
|
||||||
SQMP
|
SQMP
|
||||||
query-commands
|
query-commands
|
||||||
--------------
|
--------------
|
||||||
|
|
16
qmp.c
16
qmp.c
|
@ -26,3 +26,19 @@ NameInfo *qmp_query_name(Error **errp)
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VersionInfo *qmp_query_version(Error **err)
|
||||||
|
{
|
||||||
|
VersionInfo *info = g_malloc0(sizeof(*info));
|
||||||
|
const char *version = QEMU_VERSION;
|
||||||
|
char *tmp;
|
||||||
|
|
||||||
|
info->qemu.major = strtol(version, &tmp, 10);
|
||||||
|
tmp++;
|
||||||
|
info->qemu.minor = strtol(tmp, &tmp, 10);
|
||||||
|
tmp++;
|
||||||
|
info->qemu.micro = strtol(tmp, &tmp, 10);
|
||||||
|
info->package = g_strdup(QEMU_PKGVERSION);
|
||||||
|
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue