Message ID | 20140818130206.12941.54156.stgit@fimbulvetr.bsc.es |
---|---|
State | New |
Headers | show |
Lluís Vilanova writes: > TCG-enabled events start with two format strings. Delay per-argument format > computation until requested ('Event.formats'). ping Without this fix, QEMU does not compile if an entry in trace-events has the "tcg" property. > Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> > --- > scripts/tracetool/__init__.py | 19 ++++++++++--------- > scripts/tracetool/format/ust_events_h.py | 2 +- > 2 files changed, 11 insertions(+), 10 deletions(-) > diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py > index 36c789d..854fb9e 100644 > --- a/scripts/tracetool/__init__.py > +++ b/scripts/tracetool/__init__.py > @@ -136,8 +136,7 @@ class Event(object): > Properties of the event. > args : Arguments > The event arguments. > - arg_fmts : str > - The format strings for each argument. > + > """ > _CRE = re.compile("((?P<props>.*)\s+)?" > @@ -146,11 +145,10 @@ class Event(object): > "\s*" > "(?:(?:(?P<fmt_trans>\".+),)?\s*(?P<fmt>\".+))?" > "\s*") > - _FMT = re.compile("(%\w+|%.*PRI\S+)") > _VALID_PROPS = set(["disable", "tcg", "tcg-trans", "tcg-exec"]) > - def __init__(self, name, props, fmt, args, arg_fmts, orig=None): > + def __init__(self, name, props, fmt, args, orig=None): > """ > Parameters > ---------- > @@ -162,8 +160,6 @@ class Event(object): > Event printing format (or formats). > args : Arguments > Event arguments. > - arg_fmts : list of str > - Format strings for each argument. > orig : Event or None > Original Event before transformation. > @@ -172,7 +168,6 @@ class Event(object): > self.properties = props > self.fmt = fmt > self.args = args > - self.arg_fmts = arg_fmts > if orig is None: > self.original = weakref.ref(self) > @@ -210,7 +205,6 @@ class Event(object): > if len(fmt_trans) > 0: > fmt = [fmt_trans, fmt] > args = Arguments.build(groups["args"]) > - arg_fmts = Event._FMT.findall(fmt) > if "tcg-trans" in props: > raise ValueError("Invalid property 'tcg-trans'") > @@ -221,7 +215,7 @@ class Event(object): > if "tcg" in props and isinstance(fmt, str): > raise ValueError("Events with 'tcg' property must have two formats") > - return Event(name, props, fmt, args, arg_fmts) > + return Event(name, props, fmt, args) > def __repr__(self): > """Evaluable string representation for this object.""" > @@ -234,6 +228,13 @@ class Event(object): > self.args, > fmt) > + _FMT = re.compile("(%\w+|%.*PRI\S+)") > + > + def formats(self): > + """List of argument print formats.""" > + assert not isinstance(self.fmt, list) > + return self._FMT.findall(self.fmt) > + > QEMU_TRACE = "trace_%(name)s" > QEMU_TRACE_TCG = QEMU_TRACE + "_tcg" > diff --git a/scripts/tracetool/format/ust_events_h.py b/scripts/tracetool/format/ust_events_h.py > index d189899..3e8a7cd 100644 > --- a/scripts/tracetool/format/ust_events_h.py > +++ b/scripts/tracetool/format/ust_events_h.py > @@ -65,7 +65,7 @@ def generate(events, backend): > types = e.args.types() > names = e.args.names() > - fmts = e.arg_fmts > + fmts = e.formats() > for t,n,f in zip(types, names, fmts): > if ('char *' in t) or ('char*' in t): > out(' ctf_string(' + n + ', ' + n + ')')
On Mon, Aug 18, 2014 at 03:02:07PM +0200, Lluís Vilanova wrote: > TCG-enabled events start with two format strings. Delay per-argument format > computation until requested ('Event.formats'). > > Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> > --- > scripts/tracetool/__init__.py | 19 ++++++++++--------- > scripts/tracetool/format/ust_events_h.py | 2 +- > 2 files changed, 11 insertions(+), 10 deletions(-) Thanks, applied to my tracing tree: https://github.com/stefanha/qemu/commits/tracing Stefan
diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py index 36c789d..854fb9e 100644 --- a/scripts/tracetool/__init__.py +++ b/scripts/tracetool/__init__.py @@ -136,8 +136,7 @@ class Event(object): Properties of the event. args : Arguments The event arguments. - arg_fmts : str - The format strings for each argument. + """ _CRE = re.compile("((?P<props>.*)\s+)?" @@ -146,11 +145,10 @@ class Event(object): "\s*" "(?:(?:(?P<fmt_trans>\".+),)?\s*(?P<fmt>\".+))?" "\s*") - _FMT = re.compile("(%\w+|%.*PRI\S+)") _VALID_PROPS = set(["disable", "tcg", "tcg-trans", "tcg-exec"]) - def __init__(self, name, props, fmt, args, arg_fmts, orig=None): + def __init__(self, name, props, fmt, args, orig=None): """ Parameters ---------- @@ -162,8 +160,6 @@ class Event(object): Event printing format (or formats). args : Arguments Event arguments. - arg_fmts : list of str - Format strings for each argument. orig : Event or None Original Event before transformation. @@ -172,7 +168,6 @@ class Event(object): self.properties = props self.fmt = fmt self.args = args - self.arg_fmts = arg_fmts if orig is None: self.original = weakref.ref(self) @@ -210,7 +205,6 @@ class Event(object): if len(fmt_trans) > 0: fmt = [fmt_trans, fmt] args = Arguments.build(groups["args"]) - arg_fmts = Event._FMT.findall(fmt) if "tcg-trans" in props: raise ValueError("Invalid property 'tcg-trans'") @@ -221,7 +215,7 @@ class Event(object): if "tcg" in props and isinstance(fmt, str): raise ValueError("Events with 'tcg' property must have two formats") - return Event(name, props, fmt, args, arg_fmts) + return Event(name, props, fmt, args) def __repr__(self): """Evaluable string representation for this object.""" @@ -234,6 +228,13 @@ class Event(object): self.args, fmt) + _FMT = re.compile("(%\w+|%.*PRI\S+)") + + def formats(self): + """List of argument print formats.""" + assert not isinstance(self.fmt, list) + return self._FMT.findall(self.fmt) + QEMU_TRACE = "trace_%(name)s" QEMU_TRACE_TCG = QEMU_TRACE + "_tcg" diff --git a/scripts/tracetool/format/ust_events_h.py b/scripts/tracetool/format/ust_events_h.py index d189899..3e8a7cd 100644 --- a/scripts/tracetool/format/ust_events_h.py +++ b/scripts/tracetool/format/ust_events_h.py @@ -65,7 +65,7 @@ def generate(events, backend): types = e.args.types() names = e.args.names() - fmts = e.arg_fmts + fmts = e.formats() for t,n,f in zip(types, names, fmts): if ('char *' in t) or ('char*' in t): out(' ctf_string(' + n + ', ' + n + ')')
TCG-enabled events start with two format strings. Delay per-argument format computation until requested ('Event.formats'). Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> --- scripts/tracetool/__init__.py | 19 ++++++++++--------- scripts/tracetool/format/ust_events_h.py | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-)