From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53336) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bI3SL-00035J-KD for qemu-devel@nongnu.org; Tue, 28 Jun 2016 20:34:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bI3SJ-0002SN-CB for qemu-devel@nongnu.org; Tue, 28 Jun 2016 20:34:16 -0400 Received: from mail-ob0-x241.google.com ([2607:f8b0:4003:c01::241]:35115) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bI3SJ-0002SJ-68 for qemu-devel@nongnu.org; Tue, 28 Jun 2016 20:34:15 -0400 Received: by mail-ob0-x241.google.com with SMTP id wj2so471924obc.2 for ; Tue, 28 Jun 2016 17:34:15 -0700 (PDT) MIME-Version: 1.0 Sender: alistair23@gmail.com In-Reply-To: <1465835259-21449-5-git-send-email-fred.konrad@greensocs.com> References: <1465835259-21449-1-git-send-email-fred.konrad@greensocs.com> <1465835259-21449-5-git-send-email-fred.konrad@greensocs.com> From: Alistair Francis Date: Tue, 28 Jun 2016 17:33:45 -0700 Message-ID: Content-Type: text/plain; charset=UTF-8 Subject: Re: [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: =?UTF-8?B?S09OUkFEIEZyw6lkw6lyaWM=?= Cc: "qemu-devel@nongnu.org Developers" , Edgar Iglesias , Peter Maydell , Mark Burton , Alistair Francis On Mon, Jun 13, 2016 at 9:27 AM, wrote: > From: KONRAD Frederic > > This prints the clock attached to a DeviceState when using "info qtree" monitor > command. Can you include an example of what this will look like? Thanks, Alistair > > 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 > >