[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/6] monitor: accept chardev input from iothread
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 2/6] monitor: accept chardev input from iothread |
Date: |
Tue, 9 Oct 2018 17:12:47 +0400 |
Chardev backends may not handle safely IO events from concurrent
threads. Better to wake up the chardev from the monitor IO thread if
it's being used as the chardev context.
Signed-off-by: Marc-André Lureau <address@hidden>
---
monitor.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/monitor.c b/monitor.c
index ab60c9f87e..a25514490a 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4297,6 +4297,13 @@ int monitor_suspend(Monitor *mon)
return 0;
}
+static void monitor_accept_input(void *opaque)
+{
+ Monitor *mon = opaque;
+
+ qemu_chr_fe_accept_input(&mon->chr);
+}
+
void monitor_resume(Monitor *mon)
{
if (monitor_is_hmp_non_interactive(mon)) {
@@ -4310,13 +4317,14 @@ void monitor_resume(Monitor *mon)
* let's kick the thread in case it's sleeping.
*/
if (mon->use_io_thread) {
- aio_notify(iothread_get_aio_context(mon_iothread));
+ aio_bh_schedule_oneshot(iothread_get_aio_context(mon_iothread),
+ monitor_accept_input, mon);
}
} else {
assert(mon->rs);
readline_show_prompt(mon->rs);
+ monitor_accept_input(mon);
}
- qemu_chr_fe_accept_input(&mon->chr);
}
trace_monitor_suspend(mon, -1);
}
--
2.19.0.271.gfe8321ec05
- [Qemu-devel] [PATCH 0/6] monitor: misc fixes, Marc-André Lureau, 2018/10/09
- [Qemu-devel] [PATCH 1/6] monitor: inline ambiguous helper functions, Marc-André Lureau, 2018/10/09
- [Qemu-devel] [PATCH 2/6] monitor: accept chardev input from iothread,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 4/6] monitor: check if chardev can switch gcontext for OOB, Marc-André Lureau, 2018/10/09
- [Qemu-devel] [PATCH 3/6] char: add a QEMU_CHAR_FEATURE_GCONTEXT flag, Marc-André Lureau, 2018/10/09
- [Qemu-devel] [PATCH 5/6] monitor: prevent inserting new monitors after cleanup, Marc-André Lureau, 2018/10/09
- [Qemu-devel] [PATCH 6/6] monitor: avoid potential dead-lock when cleaning up, Marc-André Lureau, 2018/10/09