提交 aa9b79bc 编写于 作者: L Luiz Capitulino

qapi: Convert query-commands

Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
上级 c5a415a0
...@@ -731,39 +731,37 @@ help: ...@@ -731,39 +731,37 @@ help:
help_cmd(mon, "info"); help_cmd(mon, "info");
} }
static QObject *get_cmd_dict(const char *name) static CommandInfoList *alloc_cmd_entry(const char *cmd_name)
{ {
const char *p; CommandInfoList *info;
/* Remove '|' from some commands */ info = g_malloc0(sizeof(*info));
p = strchr(name, '|'); info->value = g_malloc0(sizeof(*info->value));
if (p) { info->value->name = g_strdup(cmd_name);
p++;
} else {
p = name;
}
return qobject_from_jsonf("{ 'name': %s }", p); return info;
} }
static void do_info_commands(Monitor *mon, QObject **ret_data) CommandInfoList *qmp_query_commands(Error **errp)
{ {
QList *cmd_list; CommandInfoList *info, *cmd_list = NULL;
const mon_cmd_t *cmd; const mon_cmd_t *cmd;
cmd_list = qlist_new();
for (cmd = qmp_cmds; cmd->name != NULL; cmd++) { for (cmd = qmp_cmds; cmd->name != NULL; cmd++) {
qlist_append_obj(cmd_list, get_cmd_dict(cmd->name)); info = alloc_cmd_entry(cmd->name);
info->next = cmd_list;
cmd_list = info;
} }
for (cmd = qmp_query_cmds; cmd->name != NULL; cmd++) { for (cmd = qmp_query_cmds; cmd->name != NULL; cmd++) {
char buf[128]; char buf[128];
snprintf(buf, sizeof(buf), "query-%s", cmd->name); snprintf(buf, sizeof(buf), "query-%s", cmd->name);
qlist_append_obj(cmd_list, get_cmd_dict(buf)); info = alloc_cmd_entry(buf);
info->next = cmd_list;
cmd_list = info;
} }
*ret_data = QOBJECT(cmd_list); return cmd_list;
} }
/* get the current CPU defined by the user */ /* get the current CPU defined by the user */
...@@ -3063,14 +3061,6 @@ static const mon_cmd_t qmp_cmds[] = { ...@@ -3063,14 +3061,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 = "commands",
.args_type = "",
.params = "",
.help = "list QMP available commands",
.user_print = monitor_user_noop,
.mhandler.info_new = do_info_commands,
},
{ {
.name = "block", .name = "block",
.args_type = "", .args_type = "",
......
...@@ -202,3 +202,26 @@ ...@@ -202,3 +202,26 @@
# Since: 0.14.0 # Since: 0.14.0
## ##
{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] } { 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
##
# @CommandInfo:
#
# Information about a QMP command
#
# @name: The command name
#
# Since: 0.14.0
##
{ 'type': 'CommandInfo', 'data': {'name': 'str'} }
##
# @query-commands:
#
# Return a list of supported QMP commands by this server
#
# Returns: A list of @CommandInfo for all supported commands
#
# Since: 0.14.0
##
{ 'command': 'query-commands', 'returns': ['CommandInfo'] }
...@@ -1090,6 +1090,12 @@ Note: This example has been shortened as the real response is too long. ...@@ -1090,6 +1090,12 @@ Note: This example has been shortened as the real response is too long.
EQMP EQMP
{
.name = "query-commands",
.args_type = "",
.mhandler.cmd_new = qmp_marshal_input_query_commands,
},
SQMP SQMP
query-chardev query-chardev
------------- -------------
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册