On Thu, Sep 22, 2016 at 02:20:26PM +0200, Lluís Vilanova wrote: > Daniel P Berrange writes: > > > This converts the HMP/QMP monitor API implementations > > and some internal trace control methods to use the new > > trace event iterator APIs. > > > Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> > > Signed-off-by: Daniel P. Berrange <berra...@redhat.com> > > --- > > monitor.c | 26 ++++++++++-------- > > trace/control.c | 85 > > +++++++++++++++++++++++++++++++-------------------------- > > trace/qmp.c | 16 +++++++---- > > 3 files changed, 70 insertions(+), 57 deletions(-)
> > diff --git a/trace/qmp.c b/trace/qmp.c > > index 11d2564..88a907b 100644 > > --- a/trace/qmp.c > > +++ b/trace/qmp.c > > @@ -52,8 +52,10 @@ static bool check_events(bool has_vcpu, bool > > ignore_unavailable, bool is_pattern > > return true; > > } else { > > /* error for unavailable events */ > > - TraceEvent *ev = NULL; > > - while ((ev = trace_event_pattern(name, ev)) != NULL) { > > + TraceEventIter iter; > > + TraceEvent *ev; > > + trace_event_iter_init(&iter, name); > > + while ((ev = trace_event_iter_next(&iter)) != NULL) { > > if (!ignore_unavailable && !trace_event_get_state_static(ev)) { > > error_setg(errp, "event \"%s\" is disabled", > > trace_event_get_name(ev)); > > return false; > > @@ -69,6 +71,7 @@ TraceEventInfoList *qmp_trace_event_get_state(const char > > *name, > > { > > Error *err = NULL; > > TraceEventInfoList *events = NULL; > > + TraceEventIter iter; > > TraceEvent *ev; > > bool is_pattern = trace_event_is_pattern(name); > > CPUState *cpu; > > @@ -86,8 +89,8 @@ TraceEventInfoList *qmp_trace_event_get_state(const char > > *name, > > } > > > /* Get states (all errors checked above) */ > > - ev = NULL; > > - while ((ev = trace_event_pattern(name, ev)) != NULL) { > > + trace_event_iter_init(&iter, is_pattern ? name : NULL); > > I think you should always pass name, otherwise a non-pattern name (when the > user > wants an exact name match) will return the state of all events. Hm, yes, don't know why i did that - its clearly wrong. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|