[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 16/21] qapi: Convert query-chardev
From: |
Michael Roth |
Subject: |
Re: [Qemu-devel] [PATCH 16/21] qapi: Convert query-chardev |
Date: |
Thu, 29 Sep 2011 14:17:57 -0500 |
Looks good, tested qmp/hmp commands.
Reviewed-by: Michael Roth <address@hidden>
Tested-by: Michael Roth <address@hidden>
On Wed, 28 Sep 2011 11:44:40 -0300, Luiz Capitulino <address@hidden> wrote:
> The original conversion was done by Anthony Liguori. This commit
> is just a rebase.
>
> Signed-off-by: Luiz Capitulino <address@hidden>
> ---
> hmp.c | 13 +++++++++++++
> hmp.h | 1 +
> monitor.c | 11 +----------
> qapi-schema.json | 26 ++++++++++++++++++++++++++
> qemu-char.c | 35 +++++++++++------------------------
> qmp-commands.hx | 6 ++++++
> 6 files changed, 58 insertions(+), 34 deletions(-)
>
> diff --git a/hmp.c b/hmp.c
> index 1cd40ae..91de86c 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -80,3 +80,16 @@ void hmp_info_uuid(Monitor *mon)
> monitor_printf(mon, "%s\n", info->UUID);
> qapi_free_UuidInfo(info);
> }
> +
> +void hmp_info_chardev(Monitor *mon)
> +{
> + ChardevInfoList *char_info, *info;
> +
> + char_info = qmp_query_chardev(NULL);
> + for (info = char_info; info; info = info->next) {
> + monitor_printf(mon, "%s: filename=%s\n", info->value->label,
> + info->value->filename);
> + }
> +
> + qapi_free_ChardevInfoList(char_info);
> +}
> diff --git a/hmp.h b/hmp.h
> index 49a5971..7388f9a 100644
> --- a/hmp.h
> +++ b/hmp.h
> @@ -22,5 +22,6 @@ void hmp_info_version(Monitor *mon);
> void hmp_info_kvm(Monitor *mon);
> void hmp_info_status(Monitor *mon);
> void hmp_info_uuid(Monitor *mon);
> +void hmp_info_chardev(Monitor *mon);
>
> #endif
> diff --git a/monitor.c b/monitor.c
> index d294bc9..66b3004 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -2777,8 +2777,7 @@ static const mon_cmd_t info_cmds[] = {
> .args_type = "",
> .params = "",
> .help = "show the character devices",
> - .user_print = qemu_chr_info_print,
> - .mhandler.info_new = qemu_chr_info,
> + .mhandler.info = hmp_info_chardev,
> },
> {
> .name = "block",
> @@ -3060,14 +3059,6 @@ static const mon_cmd_t qmp_query_cmds[] = {
> .mhandler.info_new = do_info_commands,
> },
> {
> - .name = "chardev",
> - .args_type = "",
> - .params = "",
> - .help = "show the character devices",
> - .user_print = qemu_chr_info_print,
> - .mhandler.info_new = qemu_chr_info,
> - },
> - {
> .name = "block",
> .args_type = "",
> .params = "",
> diff --git a/qapi-schema.json b/qapi-schema.json
> index b678f07..2ebcb1c 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -176,3 +176,29 @@
> ##
> { 'command': 'query-uuid', 'returns': 'UuidInfo' }
>
> +##
> +# @ChardevInfo:
> +#
> +# Information about a character device.
> +#
> +# @label: the label of the character device
> +#
> +# @filename: the filename of the character device
> +#
> +# Notes: @filename is encoded using the QEMU command line character device
> +# encoding. See the QEMU man page for details.
> +#
> +# Since: 0.14.0
> +##
> +{ 'type': 'ChardevInfo', 'data': {'label': 'str', 'filename': 'str'} }
> +
> +##
> +# @query-chardev:
> +#
> +# Returns information about current character devices.
> +#
> +# Returns: a list of @ChardevInfo
> +#
> +# Since: 0.14.0
> +##
> +{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
> diff --git a/qemu-char.c b/qemu-char.c
> index 09d2309..8bdbcfd 100644
> --- a/qemu-char.c
> +++ b/qemu-char.c
> @@ -31,7 +31,7 @@
> #include "hw/usb.h"
> #include "hw/baum.h"
> #include "hw/msmouse.h"
> -#include "qemu-objects.h"
> +#include "qmp-commands.h"
>
> #include <unistd.h>
> #include <fcntl.h>
> @@ -2650,35 +2650,22 @@ void qemu_chr_delete(CharDriverState *chr)
> g_free(chr);
> }
>
> -static void qemu_chr_qlist_iter(QObject *obj, void *opaque)
> +ChardevInfoList *qmp_query_chardev(Error **errp)
> {
> - QDict *chr_dict;
> - Monitor *mon = opaque;
> -
> - chr_dict = qobject_to_qdict(obj);
> - monitor_printf(mon, "%s: filename=%s\n", qdict_get_str(chr_dict,
> "label"),
> - qdict_get_str(chr_dict,
> "filename"));
> -}
> -
> -void qemu_chr_info_print(Monitor *mon, const QObject *ret_data)
> -{
> - qlist_iter(qobject_to_qlist(ret_data), qemu_chr_qlist_iter, mon);
> -}
> -
> -void qemu_chr_info(Monitor *mon, QObject **ret_data)
> -{
> - QList *chr_list;
> + ChardevInfoList *chr_list = NULL;
> CharDriverState *chr;
>
> - chr_list = qlist_new();
> -
> QTAILQ_FOREACH(chr, &chardevs, next) {
> - QObject *obj = qobject_from_jsonf("{ 'label': %s, 'filename': %s }",
> - chr->label, chr->filename);
> - qlist_append_obj(chr_list, obj);
> + ChardevInfoList *info = g_malloc0(sizeof(*info));
> + info->value = g_malloc0(sizeof(*info->value));
> + info->value->label = g_strdup(chr->label);
> + info->value->filename = g_strdup(chr->filename);
> +
> + info->next = chr_list;
> + chr_list = info;
> }
>
> - *ret_data = QOBJECT(chr_list);
> + return chr_list;
> }
>
> CharDriverState *qemu_chr_find(const char *name)
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index 4fef25f..dfc02af 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -1120,6 +1120,12 @@ Example:
>
> EQMP
>
> + {
> + .name = "query-chardev",
> + .args_type = "",
> + .mhandler.cmd_new = qmp_marshal_input_query_chardev,
> + },
> +
> SQMP
> query-block
> -----------
> --
> 1.7.7.rc0.72.g4b5ea
>
--
Sincerely,
Mike Roth
IBM Linux Technology Center
- [Qemu-devel] [PATCH 08/21] qapi: add test cases for generated free functions, (continued)
- [Qemu-devel] [PATCH 16/21] qapi: Convert query-chardev, Luiz Capitulino, 2011/09/28
- Re: [Qemu-devel] [PATCH 16/21] qapi: Convert query-chardev,
Michael Roth <=
- [Qemu-devel] [PATCH 06/21] qapi: dealloc visitor, fix premature free and iteration logic, Luiz Capitulino, 2011/09/28
- [Qemu-devel] [PATCH 17/21] qapi: Convert query-commands, Luiz Capitulino, 2011/09/28
- [Qemu-devel] [PATCH 21/21] qapi: Convert system_powerdown, Luiz Capitulino, 2011/09/28
- [Qemu-devel] [PATCH 13/21] qapi: Convert query-kvm, Luiz Capitulino, 2011/09/28
- [Qemu-devel] [PATCH 14/21] qapi: Convert query-status, Luiz Capitulino, 2011/09/28
- [Qemu-devel] [PATCH 18/21] qapi: Convert quit, Luiz Capitulino, 2011/09/28
- [Qemu-devel] [PATCH 15/21] qapi: Convert query-uuid, Luiz Capitulino, 2011/09/28