On Mon, Dec 18, 2017 at 11:27:02AM +0800, Peter Xu wrote:
> On Sat, Dec 16, 2017 at 09:01:12AM +0000, Stefan Hajnoczi wrote:
> > On Sat, Dec 16, 2017 at 11:52:28AM +0800, Peter Xu wrote:
> > > On Fri, Dec 15, 2017 at 12:47:11PM +0000, Stefan Hajnoczi wrote:
> > > > On Fri, Dec 15, 2017 at 04:11:41PM +0800, Peter Xu wrote:
> > > > > On Wed, Dec 13, 2017 at 03:48:06PM +0000, Stefan Hajnoczi wrote:
> > > > > > On Tue, Dec 05, 2017 at 01:51:41PM +0800, Peter Xu wrote:
> > }
> >
> > Now vl.c:main() doesn't need to initialize the monitor.
> >
> > We still need to handle the qtest_enabled() dependency:
> >
> > -static QEMUClockType event_clock_type = QEMU_CLOCK_REALTIME;
> > +static inline QEMUClockType event_clock_type(void)
> > +{
> > + return qtest_enabled() ? QEMU_CLOCK_VIRTUAL : QEMU_CLOCK_REALTIME;
> > +}
> >
> > This way the qtest_enabled() call is deferred until later when the
> > accelerators have been initialized.
>
> Or... to be much simpler... How about we just use my patch? IMHO it
> calls monitor_init_globals() after configure_accelerator() so
> monitor_qapi_event_init() and everything else would just work as
> expected?Ordering is complex in vl.c:main() so I think it's more maintainable to put initialization in a monitor.c constructor function and/or monitor_init(). If you want to keep your approach please add a comment about the qtest_enabled() dependency in vl.c:main(). Stefan
signature.asc
Description: PGP signature
