From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MjDEx-0005BA-FO for qemu-devel@nongnu.org; Thu, 03 Sep 2009 10:24:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MjDEs-00057T-3V for qemu-devel@nongnu.org; Thu, 03 Sep 2009 10:24:42 -0400 Received: from [199.232.76.173] (port=33002 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MjDEr-00057L-QU for qemu-devel@nongnu.org; Thu, 03 Sep 2009 10:24:37 -0400 Received: from mx1.redhat.com ([209.132.183.28]:6839) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MjDEr-0003YG-4Y for qemu-devel@nongnu.org; Thu, 03 Sep 2009 10:24:37 -0400 From: Luiz Capitulino Date: Thu, 3 Sep 2009 11:24:18 -0300 Message-Id: <1251987859-20254-5-git-send-email-lcapitulino@redhat.com> In-Reply-To: <1251987859-20254-1-git-send-email-lcapitulino@redhat.com> References: <1251987859-20254-1-git-send-email-lcapitulino@redhat.com> Subject: [Qemu-devel] [PATCH 4/5] monitor: Port do_info_balloon() to QObject List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, avi@redhat.com do_info_balloon() returns 0 on success or -1 when the 'balloon' value could not be queried. The returned data is always a QString. This also introduces monitor_print_qobject(), which can be used as a standard way to print QObjects in the user protocol format. Signed-off-by: Luiz Capitulino --- monitor.c | 41 +++++++++++++++++++++++++++++++++-------- 1 files changed, 33 insertions(+), 8 deletions(-) diff --git a/monitor.c b/monitor.c index f9f3cbd..545833d 100644 --- a/monitor.c +++ b/monitor.c @@ -213,6 +213,22 @@ static void monitor_print_nothing(Monitor *mon, const QObject *data) return; } +static void monitor_print_qobject(Monitor *mon, const QObject *data) +{ + switch (qobject_type(data)) { + case QTYPE_QSTRING: + monitor_printf(mon, "%s",qstring_get_str(qobject_to_qstring(data))); + break; + case QTYPE_QINT: + monitor_printf(mon, "%lu", qint_get_int(qobject_to_qint(data))); + break; + default: + monitor_printf(mon, "ERROR: unsupported type: %d\n", + qobject_type(data)); + break; + } +} + static int compare_cmd(const char *name, const char *list) { const char *p, *pstart; @@ -1586,18 +1602,27 @@ static void do_balloon(Monitor *mon, const QDict *qdict) qemu_balloon(target << 20); } -static void do_info_balloon(Monitor *mon) +static int do_info_balloon(Monitor *mon, QObject **ret_data) { + QString *qs; ram_addr_t actual; + int ret = -1; actual = qemu_balloon_status(); - if (kvm_enabled() && !kvm_has_sync_mmu()) - monitor_printf(mon, "Using KVM without synchronous MMU, " + if (kvm_enabled() && !kvm_has_sync_mmu()) { + qs = qstring_from_str("Using KVM without synchronous MMU, " "ballooning disabled\n"); - else if (actual == 0) - monitor_printf(mon, "Ballooning not activated in VM\n"); - else - monitor_printf(mon, "balloon: actual=%d\n", (int)(actual >> 20)); + } else if (actual == 0) { + qs = qstring_from_str("Ballooning not activated in VM\n"); + } else { + char buf[128]; + sprintf(buf, "balloon: actual=%d\n", (int)(actual >> 20)); + qs = qstring_from_str(buf); + ret = 0; + } + + *ret_data = QOBJECT(qs); + return ret; } static qemu_acl *find_acl(Monitor *mon, const char *name) @@ -1898,7 +1923,7 @@ static const mon_cmd_t info_cmds[] = { "", "show user network stack connection states", }, #endif { "migrate", "", do_info_migrate, NULL, "", "show migration status" }, - { "balloon", "", do_info_balloon, NULL, + { "balloon", "", do_info_balloon, monitor_print_qobject, "", "show balloon information" }, { "qtree", "", do_info_qtree, NULL, "", "show device tree" }, -- 1.6.4.2.253.g0b1fac