mirror of https://github.com/xemu-project/xemu.git
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);
|
||||
}
|
||||
|
||||
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"
|
||||
|
||||
void hmp_info_name(Monitor *mon);
|
||||
void hmp_info_version(Monitor *mon);
|
||||
|
||||
#endif
|
||||
|
|
46
monitor.c
46
monitor.c
|
@ -731,37 +731,6 @@ help:
|
|||
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)
|
||||
{
|
||||
const char *p;
|
||||
|
@ -2872,8 +2841,7 @@ static const mon_cmd_t info_cmds[] = {
|
|||
.args_type = "",
|
||||
.params = "",
|
||||
.help = "show the version of QEMU",
|
||||
.user_print = do_info_version_print,
|
||||
.mhandler.info_new = do_info_version,
|
||||
.mhandler.info = hmp_info_version,
|
||||
},
|
||||
{
|
||||
.name = "network",
|
||||
|
@ -3171,14 +3139,6 @@ static const mon_cmd_t qmp_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",
|
||||
.args_type = "",
|
||||
|
@ -5185,9 +5145,9 @@ void monitor_resume(Monitor *mon)
|
|||
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,3 +23,40 @@
|
|||
# Since 0.14.0
|
||||
##
|
||||
{ '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
|
||||
|
||||
{
|
||||
.name = "query-version",
|
||||
.args_type = "",
|
||||
.mhandler.cmd_new = qmp_marshal_input_query_version,
|
||||
},
|
||||
|
||||
SQMP
|
||||
query-commands
|
||||
--------------
|
||||
|
|
16
qmp.c
16
qmp.c
|
@ -26,3 +26,19 @@ NameInfo *qmp_query_name(Error **errp)
|
|||
|
||||
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 New Issue