Skip to content

Commit

Permalink
monitor: Add allow_hmp parameter to monitor_init()
Browse files Browse the repository at this point in the history
Add a new parameter allow_hmp to monitor_init() so that the storage
daemon can disable HMP.

Signed-off-by: Kevin Wolf <[email protected]>
Message-Id: <[email protected]>
Acked-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
  • Loading branch information
kevmw committed Mar 6, 2020
1 parent 8e9119a commit a2f411c
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
2 changes: 1 addition & 1 deletion include/monitor/monitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ void monitor_init_globals(void);
void monitor_init_globals_core(void);
void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp);
void monitor_init_hmp(Chardev *chr, bool use_readline, Error **errp);
int monitor_init(MonitorOptions *opts, Error **errp);
int monitor_init(MonitorOptions *opts, bool allow_hmp, Error **errp);
int monitor_init_opts(QemuOpts *opts, Error **errp);
void monitor_cleanup(void);

Expand Down
12 changes: 10 additions & 2 deletions monitor/monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ void monitor_init_globals_core(void)
NULL);
}

int monitor_init(MonitorOptions *opts, Error **errp)
int monitor_init(MonitorOptions *opts, bool allow_hmp, Error **errp)
{
Chardev *chr;
Error *local_err = NULL;
Expand All @@ -622,11 +622,19 @@ int monitor_init(MonitorOptions *opts, Error **errp)
return -1;
}

if (!opts->has_mode) {
opts->mode = allow_hmp ? MONITOR_MODE_READLINE : MONITOR_MODE_CONTROL;
}

switch (opts->mode) {
case MONITOR_MODE_CONTROL:
monitor_init_qmp(chr, opts->pretty, &local_err);
break;
case MONITOR_MODE_READLINE:
if (!allow_hmp) {
error_setg(errp, "Only QMP is supported");
return -1;
}
if (opts->pretty) {
warn_report("'pretty' is deprecated for HMP monitors, it has no "
"effect and will be removed in future versions");
Expand Down Expand Up @@ -658,7 +666,7 @@ int monitor_init_opts(QemuOpts *opts, Error **errp)
goto out;
}

monitor_init(options, &local_err);
monitor_init(options, true, &local_err);
qapi_free_MonitorOptions(options);

out:
Expand Down
3 changes: 2 additions & 1 deletion qapi/control.json
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,8 @@
#
# @id: Name of the monitor
#
# @mode: Selects the monitor mode (default: readline)
# @mode: Selects the monitor mode (default: readline in the system
# emulator, control in qemu-storage-daemon)
#
# @pretty: Enables pretty printing (QMP only)
#
Expand Down

0 comments on commit a2f411c

Please sign in to comment.