Message ID | 20180817051853.23792-9-cota@braap.org |
---|---|
State | New |
Headers | show |
Series | synchronization profiler | expand |
* 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
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, + }, + +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 {
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(+)