@samitouri / QOSamiQemu / commits / ab0d33832f

monitor: move monitor_hmp_print*() functions to hmp.c

Those functions are only used when CONFIG_HMP, compile them out, and add conditions for the calling code. Reviewed-by: Dr. David Alan Gilbert <dave@treblig.org> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-ID: <20260828-qemu-no-hmp-v5-47-9227de146347@redhat.com>

Marc-André Lureau committed Aug 28, 2026 at 16:04 UTC ab0d33832f3bd5a43bb5e2a0d69edbef4dfcf806
4 files changed +57 -50
monitor/hmp.c
+49
@@ -1754,3 +1754,52 @@ static int get_monitor_def(MonitorHMP *hmp, int64_t *pval, const char *name)
1754 }
1755 return cs->cc->sysemu_ops->monitor_get_register(cs, name, pval);
1756 }
1757 +
1758 +int monitor_hmp_vprintf(MonitorHMP *hmp, const char *fmt, va_list ap)
1759 +{
1760 + g_autofree char *buf = g_strdup_vprintf(fmt, ap);
1761 +
1762 + if (!hmp) {
1763 + return -1;
1764 + }
1765 +
1766 + return monitor_puts(MONITOR(hmp), buf);
1767 +}
1768 +
1769 +int monitor_hmp_printf(MonitorHMP *hmp, const char *fmt, ...)
1770 +{
1771 + int ret;
1772 +
1773 + va_list ap;
1774 + va_start(ap, fmt);
1775 + ret = monitor_hmp_vprintf(hmp, fmt, ap);
1776 + va_end(ap);
1777 + return ret;
1778 +}
1779 +
1780 +void monitor_hmp_printc(MonitorHMP *hmp, int c)
1781 +{
1782 + monitor_hmp_printf(hmp, "'");
1783 + switch (c) {
1784 + case '\'':
1785 + monitor_hmp_printf(hmp, "\\'");
1786 + break;
1787 + case '\\':
1788 + monitor_hmp_printf(hmp, "\\\\");
1789 + break;
1790 + case '\n':
1791 + monitor_hmp_printf(hmp, "\\n");
1792 + break;
1793 + case '\r':
1794 + monitor_hmp_printf(hmp, "\\r");
1795 + break;
1796 + default:
1797 + if (c >= 32 && c <= 126) {
1798 + monitor_hmp_printf(hmp, "%c", c);
1799 + } else {
1800 + monitor_hmp_printf(hmp, "\\x%02x", c);
1801 + }
1802 + break;
1803 + }
1804 + monitor_hmp_printf(hmp, "'");
1805 +}
monitor/monitor.c
-49
@@ -272,55 +272,6 @@ int monitor_puts(Monitor *mon, const char *str)
272 return monitor_puts_locked(mon, str);
273 }
274
275 -int monitor_hmp_vprintf(MonitorHMP *mon, const char *fmt, va_list ap)
276 -{
277 - g_autofree char *buf = g_strdup_vprintf(fmt, ap);
278 -
279 - if (!mon) {
280 - return -1;
281 - }
282 -
283 - return monitor_puts(MONITOR(mon), buf);
284 -}
285 -
286 -int monitor_hmp_printf(MonitorHMP *mon, const char *fmt, ...)
287 -{
288 - int ret;
289 -
290 - va_list ap;
291 - va_start(ap, fmt);
292 - ret = monitor_hmp_vprintf(mon, fmt, ap);
293 - va_end(ap);
294 - return ret;
295 -}
296 -
297 -void monitor_hmp_printc(MonitorHMP *mon, int c)
298 -{
299 - monitor_hmp_printf(mon, "'");
300 - switch(c) {
301 - case '\'':
302 - monitor_hmp_printf(mon, "\\'");
303 - break;
304 - case '\\':
305 - monitor_hmp_printf(mon, "\\\\");
306 - break;
307 - case '\n':
308 - monitor_hmp_printf(mon, "\\n");
309 - break;
310 - case '\r':
311 - monitor_hmp_printf(mon, "\\r");
312 - break;
313 - default:
314 - if (c >= 32 && c <= 126) {
315 - monitor_hmp_printf(mon, "%c", c);
316 - } else {
317 - monitor_hmp_printf(mon, "\\x%02x", c);
318 - }
319 - break;
320 - }
321 - monitor_hmp_printf(mon, "'");
322 -}
323 -
275 static MonitorQAPIEventConf monitor_qapi_event_conf[QAPI_EVENT__MAX] = {
276 /* Limit guest-triggerable events to 1 per second */
277 [QAPI_EVENT_RTC_CHANGE] = { 1000 * SCALE_MS },
util/error-report.c
+2 -1
@@ -35,10 +35,11 @@ const char *error_guest_name;
35 static int G_GNUC_PRINTF(2, 0)
36 error_vprintf_hmp(MonitorHMP *hmp, const char *fmt, va_list ap)
37 {
38 +#ifdef CONFIG_HMP
39 if (hmp) {
40 return monitor_hmp_vprintf(hmp, fmt, ap);
41 }
41 -
42 +#endif
43 return vfprintf(stderr, fmt, ap);
44 }
45
util/qemu-print.c
+6
@@ -27,6 +27,7 @@ int qemu_vprintf(const char *fmt, va_list ap)
27
28 /* for all monitors: QMP & HMP */
29 if (cur_mon) {
30 +#ifdef CONFIG_HMP
31 /* don't use monitor_cur_hmp(), to avoid a second lookup */
32 MonitorHMP *hmp = (MonitorHMP *)
33 object_dynamic_cast(OBJECT(cur_mon), TYPE_MONITOR_HMP);
@@ -34,6 +35,9 @@ int qemu_vprintf(const char *fmt, va_list ap)
35 return -1;
36 }
37 return monitor_hmp_vprintf(hmp, fmt, ap);
38 +#else
39 + return -1;
40 +#endif
41 }
42 return vprintf(fmt, ap);
43 }
@@ -63,6 +67,7 @@ int qemu_printf(const char *fmt, ...)
67 */
68 int qemu_vfprintf(FILE *stream, const char *fmt, va_list ap)
69 {
70 +#ifdef CONFIG_HMP
71 if (!stream) {
72 MonitorHMP *hmp = monitor_cur_hmp();
73 if (!hmp) {
@@ -70,6 +75,7 @@ int qemu_vfprintf(FILE *stream, const char *fmt, va_list ap)
75 }
76 return monitor_hmp_vprintf(hmp, fmt, ap);
77 }
78 +#endif
79 return vfprintf(stream, fmt, ap);
80 }
81