All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Show values and description when using "qom-list"
@ 2018-04-13  8:05 Perez Blanco, Ricardo (Nokia - BE/Antwerp)
  2018-04-13 12:53 ` no-reply
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Perez Blanco, Ricardo (Nokia - BE/Antwerp) @ 2018-04-13  8:05 UTC (permalink / raw)
  To: qemu-devel; +Cc: dgilbert, eblake, armbru

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 <ricardo.perez_blanco@nokia.com>
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).

Signed-off-by: Ricardo Perez Blanco <ricardo.perez_blanco@nokia.com>
---
 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

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-04-25  0:39 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-13  8:05 [Qemu-devel] [PATCH] Show values and description when using "qom-list" Perez Blanco, Ricardo (Nokia - BE/Antwerp)
2018-04-13 12:53 ` no-reply
2018-04-16 12:00   ` Perez Blanco, Ricardo (Nokia - BE/Antwerp)
2018-04-17 19:11     ` Eric Blake
2018-04-17 19:19 ` Eric Blake
2018-04-19  3:51 ` QingFeng Hao
2018-04-24 11:49   ` Dr. David Alan Gilbert
2018-04-24 12:17     ` Perez Blanco, Ricardo (Nokia - BE/Antwerp)
2018-04-25  0:38     ` QingFeng Hao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.