On Thu, Jun 12, 2014 at 2:49 AM, Paolo Bonzini <pbonz...@redhat.com> wrote: > From: Marcelo Tosatti <mtosa...@redhat.com> > > Add a link to rtc under /machine providing a stable > location for management apps to query "date" field. > > {"execute":"qom-get","arguments":{"path":"/machine/rtc","property":"date"} } > > Suggested by Paolo Bonzini. > > Signed-off-by: Marcelo Tosatti <mtosa...@redhat.com> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > Signed-off-by: mtosa...@redhat.com <mtosa...@redhat.com> > --- > hw/timer/mc146818rtc.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c > index df54546..8c706e1 100644 > --- a/hw/timer/mc146818rtc.c > +++ b/hw/timer/mc146818rtc.c > @@ -893,6 +893,9 @@ static void rtc_realizefn(DeviceState *dev, Error **errp) > > object_property_add(OBJECT(s), "date", "struct tm", > rtc_get_date, NULL, NULL, s, NULL); > + > + object_property_add_alias(qdev_get_machine(), "rtc", > + OBJECT(s), NULL, &error_abort);
This will fail if anyone wants to add two such devices to a machine model. It seems a bit board specific to assume that this device is only valid as a singleton. Perhaps s/&error_abort/local_err/ and raising a warning explaining that only the first RTC in the system gets the alias? The other options is arrayification using your (hot off the press) "[*]" proposal: + object_property_add_alias(qdev_get_machine(), "rtc[*]", + OBJECT(s), NULL, &error_abort); Regards, Peter > } > > ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq) > @@ -932,11 +935,17 @@ static void rtc_class_initfn(ObjectClass *klass, void > *data) > dc->cannot_instantiate_with_device_add_yet = true; > } > > +static void rtc_finalize(Object *obj) > +{ > + object_property_del(qdev_get_machine(), "rtc", NULL); > +} > + > static const TypeInfo mc146818rtc_info = { > .name = TYPE_MC146818_RTC, > .parent = TYPE_ISA_DEVICE, > .instance_size = sizeof(RTCState), > .class_init = rtc_class_initfn, > + .instance_finalize = rtc_finalize, > }; > > static void mc146818rtc_register_types(void) > -- > 1.8.3.1 > >