* Emilio G. Cota (cota@braap.org) wrote:
> The command introduced here is just for developers. This means that:
>
> - the interface implemented here could change in the future
> - the command is only meant to be used from HMP, not from QMP
>
> Signed-off-by: Emilio G. Cota <cota@braap.org>
> ---
> hmp.h | 1 +
> hmp.c | 24 ++++++++++++++++++++++++
> hmp-commands.hx | 15 +++++++++++++++
> 3 files changed, 40 insertions(+)
>
> diff --git a/hmp.h b/hmp.h
> index 33354f1bdd..5f1addcca2 100644
> --- a/hmp.h
> +++ b/hmp.h
> @@ -42,6 +42,7 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict);
> void hmp_info_iothreads(Monitor *mon, const QDict *qdict);
> void hmp_quit(Monitor *mon, const QDict *qdict);
> void hmp_stop(Monitor *mon, const QDict *qdict);
> +void hmp_sync_profile(Monitor *mon, const QDict *qdict);
> void hmp_system_reset(Monitor *mon, const QDict *qdict);
> void hmp_system_powerdown(Monitor *mon, const QDict *qdict);
> void hmp_exit_preconfig(Monitor *mon, const QDict *qdict);
> diff --git a/hmp.c b/hmp.c
> index 2aafb50e8e..d94a47f7c7 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -1062,6 +1062,30 @@ void hmp_stop(Monitor *mon, const QDict *qdict)
> qmp_stop(NULL);
> }
>
> +void hmp_sync_profile(Monitor *mon, const QDict *qdict)
> +{
> + const char *op = qdict_get_try_str(qdict, "op");
> +
> + if (op == NULL) {
> + bool on = qsp_is_enabled();
> +
> + monitor_printf(mon, "sync-profile is %s\n", on ? "on" : "off");
> + return;
> + }
> + if (!strcmp(op, "on")) {
> + qsp_enable();
> + } else if (!strcmp(op, "off")) {
> + qsp_disable();
> + } else if (!strcmp(op, "reset")) {
> + qsp_reset();
> + } else {
> + Error *err = NULL;
> +
> + error_setg(&err, QERR_INVALID_PARAMETER, op);
> + hmp_handle_error(mon, &err);
> + }
> +}
> +
> void hmp_system_reset(Monitor *mon, const QDict *qdict)
> {
> qmp_system_reset(NULL);
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index c1fc747403..db0c681f74 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -643,6 +643,21 @@ sendkey ctrl-alt-f1
>
> This command is useful to send keys that your graphical user interface
> intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
> +ETEXI
> + {
> + .name = "sync-profile",
> + .args_type = "op:s?",
> + .params = "[on|off|reset]",
> + .help = "enable, disable or reset synchronization profiling. "
> + "With no arguments, prints whether profiling is on or off.",
> + .cmd = hmp_sync_profile,
> + },
That's OK; it'a little odd way to do it (I'd have expected a couple of
booleans instead of the string); but it's OK, so
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> +STEXI
> +@item sync-profile [on|off|reset]
> +@findex sync-profile
> +Enable, disable or reset synchronization profiling. With no arguments, prints
> +whether profiling is on or off.
> ETEXI
>
> {
> --
> 2.17.1
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK