Loading monitor.c +21 −2 Original line number Diff line number Diff line Loading @@ -261,11 +261,30 @@ int monitor_read_password(Monitor *mon, ReadLineFunc *readline_func, } } static gboolean monitor_unblocked(GIOChannel *chan, GIOCondition cond, void *opaque) { monitor_flush(opaque); return FALSE; } void monitor_flush(Monitor *mon) { int rc; if (mon && mon->outbuf_index != 0 && !mon->mux_out) { qemu_chr_fe_write(mon->chr, mon->outbuf, mon->outbuf_index); rc = qemu_chr_fe_write(mon->chr, mon->outbuf, mon->outbuf_index); if (rc == mon->outbuf_index) { /* all flushed */ mon->outbuf_index = 0; return; } if (rc > 0) { /* partinal write */ memmove(mon->outbuf, mon->outbuf + rc, mon->outbuf_index - rc); mon->outbuf_index -= rc; } qemu_chr_fe_add_watch(mon->chr, G_IO_OUT, monitor_unblocked, mon); } } Loading Loading
monitor.c +21 −2 Original line number Diff line number Diff line Loading @@ -261,11 +261,30 @@ int monitor_read_password(Monitor *mon, ReadLineFunc *readline_func, } } static gboolean monitor_unblocked(GIOChannel *chan, GIOCondition cond, void *opaque) { monitor_flush(opaque); return FALSE; } void monitor_flush(Monitor *mon) { int rc; if (mon && mon->outbuf_index != 0 && !mon->mux_out) { qemu_chr_fe_write(mon->chr, mon->outbuf, mon->outbuf_index); rc = qemu_chr_fe_write(mon->chr, mon->outbuf, mon->outbuf_index); if (rc == mon->outbuf_index) { /* all flushed */ mon->outbuf_index = 0; return; } if (rc > 0) { /* partinal write */ memmove(mon->outbuf, mon->outbuf + rc, mon->outbuf_index - rc); mon->outbuf_index -= rc; } qemu_chr_fe_add_watch(mon->chr, G_IO_OUT, monitor_unblocked, mon); } } Loading