Lines Matching refs:mon

78     Monitor *mon;  in monitor_cur()  local
81 mon = g_hash_table_lookup(coroutine_mon, qemu_coroutine_self()); in monitor_cur()
84 return mon; in monitor_cur()
94 Monitor *monitor_set_cur(Coroutine *co, Monitor *mon) in monitor_set_cur() argument
99 if (mon) { in monitor_set_cur()
100 g_hash_table_replace(coroutine_mon, co, mon); in monitor_set_cur()
124 static inline bool monitor_uses_readline(const MonitorHMP *mon) in monitor_uses_readline() argument
126 return mon->use_readline; in monitor_uses_readline()
129 static inline bool monitor_is_hmp_non_interactive(const Monitor *mon) in monitor_is_hmp_non_interactive() argument
131 if (monitor_is_qmp(mon)) { in monitor_is_hmp_non_interactive()
135 return !monitor_uses_readline(container_of(mon, MonitorHMP, common)); in monitor_is_hmp_non_interactive()
141 Monitor *mon = opaque; in monitor_unblocked() local
143 QEMU_LOCK_GUARD(&mon->mon_lock); in monitor_unblocked()
144 mon->out_watch = 0; in monitor_unblocked()
145 monitor_flush_locked(mon); in monitor_unblocked()
150 void monitor_flush_locked(Monitor *mon) in monitor_flush_locked() argument
156 if (mon->skip_flush) { in monitor_flush_locked()
160 buf = mon->outbuf->str; in monitor_flush_locked()
161 len = mon->outbuf->len; in monitor_flush_locked()
163 if (len && !mon->mux_out) { in monitor_flush_locked()
164 rc = qemu_chr_fe_write(&mon->chr, (const uint8_t *) buf, len); in monitor_flush_locked()
167 g_string_truncate(mon->outbuf, 0); in monitor_flush_locked()
172 g_string_erase(mon->outbuf, 0, rc); in monitor_flush_locked()
174 if (mon->out_watch == 0) { in monitor_flush_locked()
175 mon->out_watch = in monitor_flush_locked()
176 qemu_chr_fe_add_watch(&mon->chr, G_IO_OUT | G_IO_HUP, in monitor_flush_locked()
177 monitor_unblocked, mon); in monitor_flush_locked()
182 void monitor_flush(Monitor *mon) in monitor_flush() argument
184 QEMU_LOCK_GUARD(&mon->mon_lock); in monitor_flush()
185 monitor_flush_locked(mon); in monitor_flush()
189 int monitor_puts_locked(Monitor *mon, const char *str) in monitor_puts_locked() argument
197 g_string_append_c(mon->outbuf, '\r'); in monitor_puts_locked()
199 g_string_append_c(mon->outbuf, c); in monitor_puts_locked()
201 monitor_flush_locked(mon); in monitor_puts_locked()
208 int monitor_puts(Monitor *mon, const char *str) in monitor_puts() argument
210 QEMU_LOCK_GUARD(&mon->mon_lock); in monitor_puts()
211 return monitor_puts_locked(mon, str); in monitor_puts()
214 int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) in monitor_vprintf() argument
219 if (!mon) { in monitor_vprintf()
223 if (monitor_is_qmp(mon)) { in monitor_vprintf()
228 n = monitor_puts(mon, buf); in monitor_vprintf()
233 int monitor_printf(Monitor *mon, const char *fmt, ...) in monitor_printf() argument
239 ret = monitor_vprintf(mon, fmt, ap); in monitor_printf()
244 void monitor_printc(Monitor *mon, int c) in monitor_printc() argument
246 monitor_printf(mon, "'"); in monitor_printc()
249 monitor_printf(mon, "\\'"); in monitor_printc()
252 monitor_printf(mon, "\\\\"); in monitor_printc()
255 monitor_printf(mon, "\\n"); in monitor_printc()
258 monitor_printf(mon, "\\r"); in monitor_printc()
262 monitor_printf(mon, "%c", c); in monitor_printc()
264 monitor_printf(mon, "\\x%02x", c); in monitor_printc()
268 monitor_printf(mon, "'"); in monitor_printc()
338 Monitor *mon; in monitor_qapi_event_emit() local
342 QTAILQ_FOREACH(mon, &mon_list, entry) { in monitor_qapi_event_emit()
343 if (!monitor_is_qmp(mon)) { in monitor_qapi_event_emit()
347 qmp_mon = container_of(mon, MonitorQMP, common); in monitor_qapi_event_emit()
530 int monitor_suspend(Monitor *mon) in monitor_suspend() argument
532 if (monitor_is_hmp_non_interactive(mon)) { in monitor_suspend()
536 qatomic_inc(&mon->suspend_cnt); in monitor_suspend()
538 if (mon->use_io_thread) { in monitor_suspend()
546 trace_monitor_suspend(mon, 1); in monitor_suspend()
552 Monitor *mon = opaque; in monitor_accept_input() local
554 qemu_mutex_lock(&mon->mon_lock); in monitor_accept_input()
555 if (!monitor_is_qmp(mon) && mon->reset_seen) { in monitor_accept_input()
556 MonitorHMP *hmp_mon = container_of(mon, MonitorHMP, common); in monitor_accept_input()
559 qemu_mutex_unlock(&mon->mon_lock); in monitor_accept_input()
562 qemu_mutex_unlock(&mon->mon_lock); in monitor_accept_input()
565 qemu_chr_fe_accept_input(&mon->chr); in monitor_accept_input()
568 void monitor_resume(Monitor *mon) in monitor_resume() argument
570 if (monitor_is_hmp_non_interactive(mon)) { in monitor_resume()
574 if (qatomic_dec_fetch(&mon->suspend_cnt) == 0) { in monitor_resume()
577 if (mon->use_io_thread) { in monitor_resume()
583 aio_bh_schedule_oneshot(ctx, monitor_accept_input, mon); in monitor_resume()
586 trace_monitor_suspend(mon, -1); in monitor_resume()
591 Monitor *mon = opaque; in monitor_can_read() local
593 return !qatomic_read(&mon->suspend_cnt); in monitor_can_read()
596 void monitor_list_append(Monitor *mon) in monitor_list_append() argument
605 QTAILQ_INSERT_HEAD(&mon_list, mon, entry); in monitor_list_append()
606 mon = NULL; in monitor_list_append()
610 if (mon) { in monitor_list_append()
611 monitor_data_destroy(mon); in monitor_list_append()
612 g_free(mon); in monitor_list_append()
621 void monitor_data_init(Monitor *mon, bool is_qmp, bool skip_flush, in monitor_data_init() argument
627 qemu_mutex_init(&mon->mon_lock); in monitor_data_init()
628 mon->is_qmp = is_qmp; in monitor_data_init()
629 mon->outbuf = g_string_new(NULL); in monitor_data_init()
630 mon->skip_flush = skip_flush; in monitor_data_init()
631 mon->use_io_thread = use_io_thread; in monitor_data_init()
634 void monitor_data_destroy(Monitor *mon) in monitor_data_destroy() argument
636 g_free(mon->mon_cpu_path); in monitor_data_destroy()
637 qemu_chr_fe_deinit(&mon->chr, false); in monitor_data_destroy()
638 if (monitor_is_qmp(mon)) { in monitor_data_destroy()
639 monitor_data_destroy_qmp(container_of(mon, MonitorQMP, common)); in monitor_data_destroy()
641 readline_free(container_of(mon, MonitorHMP, common)->rs); in monitor_data_destroy()
643 g_string_free(mon->outbuf, true); in monitor_data_destroy()
644 qemu_mutex_destroy(&mon->mon_lock); in monitor_data_destroy()
687 Monitor *mon = QTAILQ_FIRST(&mon_list); in monitor_cleanup() local
688 QTAILQ_REMOVE(&mon_list, mon, entry); in monitor_cleanup()
691 monitor_flush(mon); in monitor_cleanup()
692 monitor_data_destroy(mon); in monitor_cleanup()
694 g_free(mon); in monitor_cleanup()