Add #ifdef CONFIG_HMP guards around HMP-specific declarations in
monitor headers and implementations:

Signed-off-by: Marc-André Lureau <[email protected]>
---
 include/monitor/hmp.h     |  2 ++
 include/monitor/monitor.h | 11 +++++++++++
 monitor/monitor.c         | 31 +++++++++++++++++++++++++++++++
 monitor/qmp-cmds.c        |  2 ++
 stubs/monitor-core.c      |  2 ++
 stubs/monitor-internal.c  |  2 ++
 6 files changed, 50 insertions(+)

diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h
index 9258a049bff..7bc524cd4ff 100644
--- a/include/monitor/hmp.h
+++ b/include/monitor/hmp.h
@@ -14,6 +14,7 @@
 #ifndef HMP_H
 #define HMP_H
 
+#ifdef CONFIG_HMP
 #include "qemu/readline.h"
 #include "qapi/qapi-types-common.h"
 #include "monitor/monitor.h"
@@ -195,3 +196,4 @@ void hmp_info_cmma(Monitor *mon, const QDict *qdict);
 void hmp_migrationmode(Monitor *mon, const QDict *qdict);
 
 #endif
+#endif
diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h
index 17182e626a7..3457f4a7f88 100644
--- a/include/monitor/monitor.h
+++ b/include/monitor/monitor.h
@@ -20,7 +20,9 @@ bool monitor_cur_is_qmp(void);
 void monitor_init_globals(void);
 void monitor_init_globals_core(void);
 void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp);
+#ifdef CONFIG_HMP
 void monitor_init_hmp(Chardev *chr, bool use_readline, Error **errp);
+#endif
 int monitor_init(MonitorOptions *opts, bool allow_hmp, Error **errp);
 int monitor_init_opts(QemuOpts *opts, Error **errp);
 void monitor_cleanup(void);
@@ -32,28 +34,37 @@ int monitor_get_fd(Monitor *mon, const char *fdname, Error 
**errp);
 int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp);
 
 int monitor_puts(Monitor *mon, const char *str);
+
+#ifdef CONFIG_HMP
 int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
     G_GNUC_PRINTF(2, 0);
 int monitor_printf(Monitor *mon, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
 void monitor_printc(Monitor *mon, int ch);
+#endif
+
 void monitor_flush(Monitor *mon);
 int monitor_get_cpu_index(Monitor *mon);
 
 int monitor_puts_locked(Monitor *mon, const char *str);
 void monitor_flush_locked(Monitor *mon);
 
+
+#ifdef CONFIG_HMP
 void monitor_read_command(MonitorHMP *mon, int show_prompt);
 int monitor_read_password(MonitorHMP *mon, ReadLineFunc *readline_func,
                           void *opaque);
+#endif
 
 AddfdInfo *monitor_fdset_add_fd(int fd, bool has_fdset_id, int64_t fdset_id,
                                 const char *opaque, Error **errp);
 int monitor_fdset_dup_fd_add(int64_t fdset_id, int flags, Error **errp);
 void monitor_fdset_dup_fd_remove(int dup_fd);
 
+#ifdef CONFIG_HMP
 void monitor_register_hmp(const char *name, bool info,
                           void (*cmd)(Monitor *mon, const QDict *qdict));
 void monitor_register_hmp_info_hrt(const char *name,
                                    HumanReadableText *(*handler)(Error 
**errp));
+#endif
 
 #endif /* MONITOR_H */
diff --git a/monitor/monitor.c b/monitor/monitor.c
index 2dec0e299af..096a5ee748d 100644
--- a/monitor/monitor.c
+++ b/monitor/monitor.c
@@ -116,6 +116,7 @@ bool monitor_cur_is_qmp(void)
     return cur_mon && monitor_is_qmp(cur_mon);
 }
 
+#ifdef CONFIG_HMP
 /**
  * Is @mon is using readline?
  * Note: not all HMP monitors use readline, e.g., gdbserver has a
@@ -134,6 +135,12 @@ static inline bool monitor_is_hmp_non_interactive(const 
Monitor *mon)
 
     return !monitor_uses_readline(container_of(mon, MonitorHMP, common));
 }
+#else
+static inline bool monitor_is_hmp_non_interactive(const Monitor *mon)
+{
+    return false;
+}
+#endif
 
 static gboolean monitor_unblocked(void *do_not_use, GIOCondition cond,
                                   void *opaque)
@@ -211,6 +218,7 @@ int monitor_puts(Monitor *mon, const char *str)
     return monitor_puts_locked(mon, str);
 }
 
+#ifdef CONFIG_HMP
 int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
 {
     char *buf;
@@ -267,6 +275,7 @@ void monitor_printc(Monitor *mon, int c)
     }
     monitor_printf(mon, "'");
 }
+#endif
 
 static MonitorQAPIEventConf monitor_qapi_event_conf[QAPI_EVENT__MAX] = {
     /* Limit guest-triggerable events to 1 per second */
@@ -541,6 +550,7 @@ static void monitor_accept_input(void *opaque)
     Monitor *mon = opaque;
 
     qemu_mutex_lock(&mon->mon_lock);
+#ifdef CONFIG_HMP
     if (!monitor_is_qmp(mon)) {
         MonitorHMP *hmp_mon = container_of(mon, MonitorHMP, common);
         assert(hmp_mon->rs);
@@ -555,6 +565,9 @@ static void monitor_accept_input(void *opaque)
     } else {
         qemu_mutex_unlock(&mon->mon_lock);
     }
+#else
+    qemu_mutex_unlock(&mon->mon_lock);
+#endif
 
     qemu_chr_fe_accept_input(&mon->chr);
 }
@@ -631,9 +644,11 @@ void monitor_data_destroy(Monitor *mon)
     if (monitor_is_qmp(mon)) {
         monitor_data_destroy_qmp(container_of(mon, MonitorQMP, common));
     } else {
+#ifdef CONFIG_HMP
         MonitorHMP *hmp_mon = container_of(mon, MonitorHMP, common);
         readline_free(hmp_mon->rs);
         g_free(hmp_mon->mon_cpu_path);
+#endif
     }
     g_string_free(mon->outbuf, true);
     qemu_mutex_destroy(&mon->mon_lock);
@@ -733,13 +748,18 @@ int monitor_init(MonitorOptions *opts, bool allow_hmp, 
Error **errp)
     }
 
     if (!opts->has_mode) {
+#ifdef CONFIG_HMP
         opts->mode = allow_hmp ? MONITOR_MODE_READLINE : MONITOR_MODE_CONTROL;
+#else
+        opts->mode = MONITOR_MODE_CONTROL;
+#endif
     }
 
     switch (opts->mode) {
     case MONITOR_MODE_CONTROL:
         monitor_init_qmp(chr, opts->pretty, errp);
         break;
+#ifdef CONFIG_HMP
     case MONITOR_MODE_READLINE:
         if (!allow_hmp) {
             error_setg(errp, "Only QMP is supported");
@@ -751,6 +771,7 @@ int monitor_init(MonitorOptions *opts, bool allow_hmp, 
Error **errp)
         }
         monitor_init_hmp(chr, true, errp);
         break;
+#endif
     default:
         g_assert_not_reached();
     }
@@ -764,6 +785,16 @@ int monitor_init_opts(QemuOpts *opts, Error **errp)
     MonitorOptions *options;
     int ret;
 
+#ifndef CONFIG_HMP
+    const char *mode = qemu_opt_get(opts, "mode");
+    /* readline is HMP..  */
+    if (mode && g_str_equal(mode, "readline")) {
+        error_setg(errp, "HMP monitor is not available,"
+                   " use '-qmp' instead of '-monitor'");
+        return -1;
+    }
+#endif
+
     v = opts_visitor_new(opts);
     visit_type_MonitorOptions(v, NULL, &options, errp);
     visit_free(v);
diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c
index 0c409c27dc3..cca25c18a15 100644
--- a/monitor/qmp-cmds.c
+++ b/monitor/qmp-cmds.c
@@ -162,6 +162,7 @@ void qmp_add_client(const char *protocol, const char 
*fdname,
     }
 }
 
+#ifdef CONFIG_HMP
 char *qmp_human_monitor_command(const char *command_line, bool has_cpu_index,
                                 int64_t cpu_index, Error **errp)
 {
@@ -189,6 +190,7 @@ out:
     monitor_data_destroy(&hmp.common);
     return output;
 }
+#endif
 
 static void __attribute__((__constructor__)) monitor_init_qmp_commands(void)
 {
diff --git a/stubs/monitor-core.c b/stubs/monitor-core.c
index 078a5012e9b..b4a4de41aa2 100644
--- a/stubs/monitor-core.c
+++ b/stubs/monitor-core.c
@@ -21,6 +21,7 @@ void qapi_event_emit(QAPIEvent event, QDict *qdict)
 {
 }
 
+#ifdef CONFIG_HMP
 int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
 {
     /*
@@ -37,3 +38,4 @@ int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
     }
     return -1;
 }
+#endif
diff --git a/stubs/monitor-internal.c b/stubs/monitor-internal.c
index 4fece49d531..29274bd2b4a 100644
--- a/stubs/monitor-internal.c
+++ b/stubs/monitor-internal.c
@@ -8,6 +8,8 @@ int monitor_get_fd(Monitor *mon, const char *name, Error **errp)
     return -1;
 }
 
+#ifdef CONFIG_HMP
 void monitor_init_hmp(Chardev *chr, bool use_readline, Error **errp)
 {
 }
+#endif

-- 
2.54.0


Reply via email to