On Wed, Jan 24, 2018 at 01:39:47PM +0800, Peter Xu wrote: > diff --git a/monitor.c b/monitor.c > index 60bcf67b3a..76137ba2a4 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -246,6 +246,21 @@ static inline bool monitor_is_qmp(const Monitor *mon) > return (mon->flags & MONITOR_USE_CONTROL); > } > > +/** > + * Whether @mon is using readline? Note: not all HMP monitors can are > + * using readline, e.g., gdbserver has non-interactive HMP monitor, so
s/can are using/use/ s/has non-interactive HMP monitor/has a non-interactive HMP monitor/ > @@ -3994,19 +4009,43 @@ static void monitor_command_cb(void *opaque, const > char *cmdline, > > int monitor_suspend(Monitor *mon) > { > - if (!mon->rs) > + if (monitor_is_hmp_non_interactive(mon)) { > return -ENOTTY; > + } > + > + if (monitor_is_qmp(mon)) { > + /* > + * Kick iothread to make sure this takes effect. It'll be > + * evaluated again in prepare() of the watch object. > + */ > + aio_notify(iothread_get_aio_context(mon_global.mon_iothread)); This must be done after incrementing suspend_cnt to avoid the race condition between the iothread and our thread.
signature.asc
Description: PGP signature