[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] Show values and description when using "qom-lis
From: |
QingFeng Hao |
Subject: |
Re: [Qemu-devel] [PATCH] Show values and description when using "qom-list" |
Date: |
Wed, 25 Apr 2018 08:38:49 +0800 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
在 2018/4/24 19:49, Dr. David Alan Gilbert 写道:
> * QingFeng Hao (address@hidden) wrote:
>>
>>
>> 在 2018/4/13 16:05, Perez Blanco, Ricardo (Nokia - BE/Antwerp) 写道:
>>> Dear all,
>>>
>>> Here you can find my first contribution to qemu. Please, do not hesitate to
>>> do any kind of remark.
>>>
>>> Based on ac4ba87ae0738d7a77708f8ce31ae2378ab99654
>>>
>>> Kind regards,
>>>
>>> Ricardo Perez Blanco
>>>
>>> >From 65df20cef2846d764a8a821574f5f3643391aac5 Mon Sep 17 00:00:00 2001
>>> From: Ricardo Perez Blanco <address@hidden>
>>> Date: Wed, 11 Apr 2018 12:09:11 +0200
>>> Subject: [PATCH] Show values and description when using "qom-list"
>>>
>>> For debugging purposes it is very useful to:
>>> - See the description of the field. This information is already filled
>>> in but not shown in "qom-list" command.
>>> - Display value of the field. So far, only well known types are
>>> implemented (string, str, int, uint, bool).
>> Need we support other types like QList and QDict? I think yes and suggest a
>> new command
>> to be introduced like qom-list-property or qom-get. The resorts may be:
>> 1) print the json string just as Alan's former patch
>> 2) print the value step by step. Supposing property foo is a
>> structure,
>> qom-list-property path foo prints its members as "mem1;mem2;mem3"
>> and qom-list-property path foo.mem1 prints mem1's value.
>> And some properties don't have get/set callback set, which prompts as below
>> if doing
>> qom-get/set:
>> (qemu) qom-get /machine kernel-irqchip
>> Insufficient permission to perform this operation
>> For these properties I think we may need to not show the value in qom-list.
>
> So while I think it would be good to handle all the cases, I'd be happy
> to take just the current enhancements to qom-list (once the cleanups that Eric
> suggested are fixed). Being able to see even just the int/bool/strings
> is very useful and something I've wanted for a while.
>
Yes, agree! Thanks!
> Dave
>
>> Thanks!
>>
>>>
>>> Signed-off-by: Ricardo Perez Blanco <address@hidden>
>>> ---
>>> hmp.c | 13 +++++++++++--
>>> qapi/misc.json | 4 +++-
>>> qmp.c | 26 ++++++++++++++++++++++++++
>>> 3 files changed, 40 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/hmp.c b/hmp.c
>>> index a25c7bd..967e0b2 100644
>>> --- a/hmp.c
>>> +++ b/hmp.c
>>> @@ -2490,8 +2490,17 @@ void hmp_qom_list(Monitor *mon, const QDict *qdict)
>>> while (list != NULL) {
>>> ObjectPropertyInfo *value = list->value;
>>>
>>> - monitor_printf(mon, "%s (%s)\n",
>>> - value->name, value->type);
>>> + monitor_printf(mon, "%s", value->name);
>>> + if (value->value) {
>>> + monitor_printf(mon, "=%s", value->value);
>>> + }
>>> + monitor_printf(mon, " (%s)", value->type);
>>> + if (value->description) {
>>> + monitor_printf(mon, "\r\t\t\t\t\t\t\t\t\t[Description:
>>> %s]",
>>> + value->description);
>>> + }
>>> + monitor_printf(mon, "\n");
>>> +
>>> list = list->next;
>>> }
>>> qapi_free_ObjectPropertyInfoList(start);
>>> diff --git a/qapi/misc.json b/qapi/misc.json
>>> index 5636f4a..6b3b4de 100644
>>> --- a/qapi/misc.json
>>> +++ b/qapi/misc.json
>>> @@ -1328,10 +1328,12 @@
>>> #
>>> # @description: if specified, the description of the property.
>>> #
>>> +# @value: if specified, the value of the property.
>>> +#
>>> # Since: 1.2
>>> ##
>>> { 'struct': 'ObjectPropertyInfo',
>>> - 'data': { 'name': 'str', 'type': 'str', '*description': 'str' } }
>>> + 'data': { 'name': 'str', 'type': 'str', '*description':'str',
>>> '*value':'str' } }
>>>
>>> ##
>>> # @qom-list:
>>> diff --git a/qmp.c b/qmp.c
>>> index f722616..750b5d0 100644
>>> --- a/qmp.c
>>> +++ b/qmp.c
>>> @@ -237,6 +237,32 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path,
>>> Error **errp)
>>>
>>> entry->value->name = g_strdup(prop->name);
>>> entry->value->type = g_strdup(prop->type);
>>> + if (prop->description) {
>>> + entry->value->description = g_strdup(prop->description);
>>> + }
>>> + if ((g_ascii_strncasecmp(entry->value->type, "string", 6) == 0) ||
>>> + (g_ascii_strncasecmp(entry->value->type, "str", 3) == 0)) {
>>> + Error **errp = NULL;
>>> + entry->value->value = g_strdup_printf("\"%s\"",
>>> + object_property_get_str(obj, entry->value->name, errp));
>>> + }
>>> + if (g_ascii_strncasecmp(entry->value->type, "int", 3) == 0) {
>>> + Error **errp = NULL;
>>> + entry->value->value = g_strdup_printf("%ld",
>>> + object_property_get_int(obj, entry->value->name, errp));
>>> + }
>>> + if (g_ascii_strncasecmp(entry->value->type, "uint", 4) == 0) {
>>> + Error **errp = NULL;
>>> + entry->value->value = g_strdup_printf("%lu",
>>> + object_property_get_uint(obj, entry->value->name, errp));
>>> + }
>>> + if (g_ascii_strncasecmp(entry->value->type, "bool", 4) == 0) {
>>> + Error **errp = NULL;
>>> + entry->value->value = g_strdup_printf("%s",
>>> + (object_property_get_bool(obj, entry->value->name, errp) ==
>>> true)
>>> + ? "true" : "false");
>>> + }
>>> +
>>> }
>>>
>>> return props;
>>> --
>>> 1.8.3.1
>>>
>>>
>>
>> --
>> Regards
>> QingFeng Hao
>>
> --
> Dr. David Alan Gilbert / address@hidden / Manchester, UK
>
--
Regards
QingFeng Hao