qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 02/17] trace: convert code to use event itera


From: Daniel P. Berrange
Subject: Re: [Qemu-devel] [PATCH v4 02/17] trace: convert code to use event iterators
Date: Thu, 22 Sep 2016 13:45:30 +0100
User-agent: Mutt/1.7.0 (2016-08-17)

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 <address@hidden>
> > Signed-off-by: Daniel P. Berrange <address@hidden>
> > ---
> >  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 :|



reply via email to

[Prev in Thread] Current Thread [Next in Thread]