On 10/5/20 9:56 PM, Luc Michel wrote: > This function creates a clock a parent it to another object with a given > name. It calls clock_setup_canonical_path before returning the new > clock. > > This function is useful to create clocks in devices when one doesn't > want to expose it at the qdev level (as an input or an output). > > Suggested-by: Philippe Mathieu-Daudé <f4...@amsat.org> > Signed-off-by: Luc Michel <l...@lmichel.fr> > --- > include/hw/clock.h | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/include/hw/clock.h b/include/hw/clock.h > index c93e6113cd..a67c4c008b 100644 > --- a/include/hw/clock.h > +++ b/include/hw/clock.h > @@ -93,10 +93,36 @@ extern const VMStateDescription vmstate_clock; > * > * compute the canonical path of the clock (used by log messages) > */ > void clock_setup_canonical_path(Clock *clk); > > +/** > + * clock_new: > + * @parent: the clock parent > + * @name: the clock object name > + * > + * Helper function to create a new clock and parent it to @parent. There is > no > + * need to call clock_setup_canonical_path on the returned clock as it is > done > + * by this function. > + * > + * @return the newly created clock > + */ > +static inline Clock *clock_new(Object *parent, const char *name) > +{ > + Object *obj; > + Clock *clk; > + > + obj = object_new(TYPE_CLOCK); > + object_property_add_child(parent, name, obj); > + object_unref(obj); > + > + clk = CLOCK(obj); > + clock_setup_canonical_path(clk);
Thanks for adding this function. It doesn't seem justified to have it inlined. Can you move it to hw/core/clock.c? > + > + return clk; > +} > + > /** > * clock_set_callback: > * @clk: the clock to register the callback into > * @cb: the callback function > * @opaque: the argument to the callback >