Hi Philippe, On 10/3/18 12:42 AM, Philippe Mathieu-Daudé wrote: > Hi Damien, > > On 10/2/18 4:24 PM, Damien Hedde wrote: >> This prints the clocks attached to a DeviceState when using "info qtree" >> monitor >> command. For every clock, it displays the direction, the name and if the >> clock is forwarded. For input clock, it displays also the frequency. > > What would also be really useful (during development mostly) > is a "info clktree" monitor command.
What would be the output ? A list of all clock related devices and their clocks ? Or something more like a clock tree starting from the source(s) clock up to the last ones ? (or the opposite starting from a clocked-device down to the sources) Concerning development, it might also be useful to have access to the frequency of a clock output. Maybe I should add the value in the object for that purpose ? > >> >> This is based on the original work of Frederic Konrad. >> >> Signed-off-by: Damien Hedde <damien.he...@greensocs.com> >> --- >> qdev-monitor.c | 12 ++++++++++++ >> 1 file changed, 12 insertions(+) >> >> diff --git a/qdev-monitor.c b/qdev-monitor.c >> index 61e0300991..8c39a3a65b 100644 >> --- a/qdev-monitor.c >> +++ b/qdev-monitor.c >> @@ -682,6 +682,7 @@ static void qdev_print(Monitor *mon, DeviceState *dev, >> int indent) >> ObjectClass *class; >> BusState *child; >> NamedGPIOList *ngl; >> + NamedClockList *clk; >> >> qdev_printf("dev: %s, id \"%s\"\n", object_get_typename(OBJECT(dev)), >> dev->id ? dev->id : ""); >> @@ -696,6 +697,17 @@ static void qdev_print(Monitor *mon, DeviceState *dev, >> int indent) >> ngl->num_out); >> } >> } >> + QLIST_FOREACH(clk, &dev->clocks, node) { >> + if (clk->out) { >> + qdev_printf("clock-out%s \"%s\"\n", >> + clk->forward ? " (fw)" : "", >> + clk->name); >> + } else { >> + qdev_printf("clock-in%s \"%s\" freq=%" PRIu64 "Hz\n", > > IMHO 'freq_hz=%" PRIu64 "\n"' is easier to read. The frequency value in hertz is not easy to read in general (eg: 33333333Hz). Maybe we should print it with an apropriate unit (eg: 33.333333MHz). We can also use the "'" printf flag for thousand separator but it's locale-dependent (and in my case it prints nothing). > > However if we plan to add/use a qemu_strtohz() similar to > qemu_strtosz_metric(), that would be fine. You mean for test purpose ? > >> + clk->forward ? " (fw)" : "", >> + clk->name, clock_get_frequency(clk->in)); >> + } >> + } >> class = object_get_class(OBJECT(dev)); >> do { >> qdev_print_props(mon, dev, DEVICE_CLASS(class)->props, indent); >> > > Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> > Tested-by: Philippe Mathieu-Daudé <phi...@redhat.com> >