From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55825) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCUiR-0006R4-2Y for qemu-devel@nongnu.org; Mon, 13 Jun 2016 12:27:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bCUiM-0000sK-57 for qemu-devel@nongnu.org; Mon, 13 Jun 2016 12:27:54 -0400 Received: from greensocs.com ([193.104.36.180]:57859) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCUiL-0000s1-Q5 for qemu-devel@nongnu.org; Mon, 13 Jun 2016 12:27:50 -0400 From: fred.konrad@greensocs.com Date: Mon, 13 Jun 2016 18:27:32 +0200 Message-Id: <1465835259-21449-5-git-send-email-fred.konrad@greensocs.com> In-Reply-To: <1465835259-21449-1-git-send-email-fred.konrad@greensocs.com> References: <1465835259-21449-1-git-send-email-fred.konrad@greensocs.com> Subject: [Qemu-devel] [RFC PATCH 04/11] qdev-monitor: print the device's clock with info qtree List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, edgar.iglesias@xilinx.com, alistair.francis@xilinx.com, mark.burton@greensocs.com, fred.konrad@greensocs.com From: KONRAD Frederic This prints the clock attached to a DeviceState when using "info qtree" monitor command. Signed-off-by: KONRAD Frederic --- include/qemu/qemu-clock.h | 9 +++++++++ qdev-monitor.c | 2 ++ qemu-clock.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/include/qemu/qemu-clock.h b/include/qemu/qemu-clock.h index 677de9a..265ec65 100644 --- a/include/qemu/qemu-clock.h +++ b/include/qemu/qemu-clock.h @@ -124,4 +124,13 @@ void qemu_clk_set_callback(qemu_clk clk, qemu_clk_on_rate_update_cb cb, void *opaque); +/** + * qemu_clk_print: + * @dev: the device for which the clock need to be printed. + * + * Print the clock information for a given device. + * + */ +void qemu_clk_print(Monitor *mon, DeviceState *dev, int indent); + #endif /* QEMU_CLOCK_H */ diff --git a/qdev-monitor.c b/qdev-monitor.c index e19617f..d6d1aa4 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -28,6 +28,7 @@ #include "qemu/config-file.h" #include "qemu/error-report.h" #include "qemu/help_option.h" +#include "qemu/qemu-clock.h" /* * Aliases were a bad idea from the start. Let's keep them @@ -684,6 +685,7 @@ static void qdev_print(Monitor *mon, DeviceState *dev, int indent) ngl->num_out); } } + qemu_clk_print(mon, dev, indent); class = object_get_class(OBJECT(dev)); do { qdev_print_props(mon, dev, DEVICE_CLASS(class)->props, indent); diff --git a/qemu-clock.c b/qemu-clock.c index 811d6a0..378a14d 100644 --- a/qemu-clock.c +++ b/qemu-clock.c @@ -24,6 +24,7 @@ #include "qemu/qemu-clock.h" #include "hw/hw.h" #include "qapi/error.h" +#include "monitor/monitor.h" /* #define DEBUG_QEMU_CLOCK */ @@ -111,6 +112,33 @@ qemu_clk qemu_clk_get_pin(DeviceState *d, const char *name) return QEMU_CLOCK(clk); } +struct print_opaque { + Monitor *mon; + int indent; +}; + +static int qemu_clk_print_rec(Object *obj, void *opaque) +{ + qemu_clk clk = (qemu_clk)(object_dynamic_cast(obj, TYPE_CLOCK)); + struct print_opaque *po = opaque; + + if (clk) { + monitor_printf(po->mon, "%*s" "qemu-clk \"%s\" %.1f\n", po->indent, + " ", clk->name, clk->out_rate); + } + + return 0; +} + +void qemu_clk_print(Monitor *mon, DeviceState *dev, int indent) +{ + struct print_opaque po; + + po.indent = indent; + po.mon = mon; + object_child_foreach(OBJECT(dev), qemu_clk_print_rec, &po); +} + static const TypeInfo qemu_clk_info = { .name = TYPE_CLOCK, .parent = TYPE_OBJECT, -- 2.5.5