[PATCH v3 08/49] monitor: move HMP-only fields from Monitor to MonitorHMP
Marc-André Lureau <[email protected]>
| Newsgroups | org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
mon_cpu_path and reset_seen are only used by HMP monitors; move them from the base Monitor struct into MonitorHMP to properly encapsulate HMP-specific state. Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Signed-off-by: Marc-André Lureau <[email protected]> --- monitor/hmp-cmds.c | 16 +++++++++------- monitor/hmp.c | 9 +++++---- monitor/monitor-internal.h | 4 ++-- monitor/monitor.c | 1 - 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index 6b1114fdaf13..6718fec97047 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -499,31 +499,33 @@ void hmp_dumpdtb(Monitor *mon, const QDict *qdict) /* Set the current CPU defined by the user. Callers must hold BQL. */ int monitor_set_cpu(Monitor *mon, int cpu_index) { + MonitorHMP *hmp_mon = MONITOR_HMP(mon); CPUState *cpu; cpu = qemu_get_cpu(cpu_index); if (cpu == NULL) { return -1; } - g_free(mon->mon_cpu_path); - mon->mon_cpu_path = object_get_canonical_path(OBJECT(cpu)); + g_free(hmp_mon->mon_cpu_path); + hmp_mon->mon_cpu_path = object_get_canonical_path(OBJECT(cpu)); return 0; } /* Callers must hold BQL. */ static CPUState *mon_get_cpu_sync(Monitor *mon, bool synchronize) { + MonitorHMP *hmp_mon = MONITOR_HMP(mon); CPUState *cpu = NULL; - if (mon->mon_cpu_path) { - cpu = (CPUState *) object_resolve_path_type(mon->mon_cpu_path, + if (hmp_mon->mon_cpu_path) { + cpu = (CPUState *) object_resolve_path_type(hmp_mon->mon_cpu_path, TYPE_CPU, NULL); if (!cpu) { - g_free(mon->mon_cpu_path); - mon->mon_cpu_path = NULL; + g_free(hmp_mon->mon_cpu_path); + hmp_mon->mon_cpu_path = NULL; } } - if (!mon->mon_cpu_path) { + if (!hmp_mon->mon_cpu_path) { if (!first_cpu) { return NULL; } diff --git a/monitor/hmp.c b/monitor/hmp.c index 22b1972d346a..8134dfaad4bb 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -50,6 +50,7 @@ OBJECT_DEFINE_TYPE(MonitorHMP, monitor_hmp, MONITOR_HMP, MONITOR); static void monitor_hmp_finalize(Object *obj) { MonitorHMP *hmp = MONITOR_HMP(obj); + g_free(hmp->mon_cpu_path); if (hmp->rs) { readline_free(hmp->rs); } @@ -112,8 +113,8 @@ int monitor_hmp_vprintf(Monitor *mon, const char *fmt, va_list ap) static void monitor_hmp_accept_input(Monitor *mon) { qemu_mutex_lock(&mon->mon_lock); - if (mon->reset_seen) { - MonitorHMP *hmp = MONITOR_HMP(mon); + MonitorHMP *hmp = MONITOR_HMP(mon); + if (hmp->reset_seen) { assert(hmp->rs); readline_restart(hmp->rs); qemu_chr_fe_accept_input(&mon->chr); @@ -1556,7 +1557,7 @@ static void monitor_event(void *opaque, QEMUChrEvent event) case CHR_EVENT_MUX_OUT: qemu_mutex_lock(&mon->mon_lock); if (!mon->mux_out) { - if (mon->reset_seen && !mon->suspend_cnt) { + if (hmp->reset_seen && !mon->suspend_cnt) { monitor_puts_locked(mon, "\n"); } else { monitor_flush_locked(mon); @@ -1573,7 +1574,7 @@ static void monitor_event(void *opaque, QEMUChrEvent event) monitor_printf(mon, "QEMU %s monitor - type 'help' for more " "information\n", QEMU_VERSION); qemu_mutex_lock(&mon->mon_lock); - mon->reset_seen = 1; + hmp->reset_seen = 1; if (!mon->mux_out && hmp->use_readline) { /* Suspend-resume forces the prompt to be printed. */ monitor_suspend(mon); diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h index e0a124a317a5..fdeeeb853636 100644 --- a/monitor/monitor-internal.h +++ b/monitor/monitor-internal.h @@ -137,7 +137,6 @@ struct Monitor { CharFrontend chr; int suspend_cnt; /* Needs to be accessed atomically */ QEMUBH *accept_input_bh; /* persistent BH for monitor_accept_input */ - char *mon_cpu_path; QTAILQ_ENTRY(Monitor) entry; /* @@ -153,7 +152,6 @@ struct Monitor { GString *outbuf; guint out_watch; int mux_out; - int reset_seen; }; struct MonitorHMPClass { @@ -170,6 +168,8 @@ struct MonitorHMP { * These members can be safely accessed without locks. */ ReadLineState *rs; + char *mon_cpu_path; + int reset_seen; }; struct MonitorQMPClass { diff --git a/monitor/monitor.c b/monitor/monitor.c index 6af09f2f6eac..6d6ffbb0f78a 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -89,7 +89,6 @@ static void monitor_finalize(Object *obj) qemu_bh_delete(mon->accept_input_bh); } g_free(mon->chardev_id); - g_free(mon->mon_cpu_path); qemu_chr_fe_deinit(&mon->chr, false); g_string_free(mon->outbuf, true); qemu_mutex_destroy(&mon->mon_lock); -- 2.55.0.543.g5ebe2ebe4ea8