diff mbox

[3/6] trace: [ŧracetool] Do not precompute the event number

Message ID 20120111180535.25198.43232.stgit@ginnungagap.bsc.es
State New
Headers show

Commit Message

Lluís Vilanova Jan. 11, 2012, 6:05 p.m. UTC
This would otherwise break event numbering when actually using the "disable"
property.

Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
---
 scripts/tracetool.py |   21 +++++++++------------
 1 files changed, 9 insertions(+), 12 deletions(-)

Comments

Harsh Prateek Bora Jan. 18, 2012, 9:48 a.m. UTC | #1
On 01/11/2012 11:35 PM, Lluís Vilanova wrote:
> This would otherwise break event numbering when actually using the "disable"
> property.
>

IIUC, event numbering does include disabled events too, are you 
proposing not to include disabled events in event numbering ? That will 
affect interpreting event numbers while reading trace logs also.

- Harsh


> Signed-off-by: Lluís Vilanova<vilanova@ac.upc.edu>
> ---
>   scripts/tracetool.py |   21 +++++++++------------
>   1 files changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/scripts/tracetool.py b/scripts/tracetool.py
> index 7a877dc..b7401a3 100755
> --- a/scripts/tracetool.py
> +++ b/scripts/tracetool.py
> @@ -128,7 +128,7 @@ def simple_h(events):
>       'args': event.args
>   }
>       print
> -    print '#define NR_TRACE_EVENTS %d' % (event.num + 1)
> +    print '#define NR_TRACE_EVENTS %d' % len(events)
>       print 'extern TraceEvent trace_list[NR_TRACE_EVENTS];'
>
>       return
> @@ -154,7 +154,7 @@ def simple_c(events):
>           print
>       print '};'
>       print
> -    for event in events:
> +    for num, event in enumerate(events):
>           argc = event.argc
>           print '''void trace_%(name)s(%(args)s)
>   {
> @@ -169,12 +169,12 @@ def simple_c(events):
>   ''' % {
>       'name': event.name,
>       'args': event.args,
> -    'event_id': event.num,
> +    'event_id': num,
>   }
>           print '''
>       tbuf_idx = trace_alloc_record(%(event_id)s, %(sizestr)s);
>       rec_off = (tbuf_idx + ST_V2_REC_HDR_LEN) %% TRACE_BUF_LEN; /* seek record header */
> -''' % {'event_id': event.num, 'sizestr': event.sizestr,}
> +''' % {'event_id': num, 'sizestr': event.sizestr,}
>
>           if argc>  0:
>               str = event.arglist
> @@ -220,7 +220,7 @@ def stderr_h(events):
>   #include "trace/stderr.h"
>
>   extern TraceEvent trace_list[];'''
> -    for event in events:
> +    for num, event in enumerate(events):
>           argnames = event.argnames
>           if event.argc>  0:
>               argnames = ', ' + event.argnames
> @@ -235,12 +235,12 @@ static inline void trace_%(name)s(%(args)s)
>   }''' % {
>       'name': event.name,
>       'args': event.args,
> -    'event_num': event.num,
> +    'event_num': num,
>       'fmt': event.fmt.rstrip('\n'),
>       'argnames': argnames
>   }
>       print
> -    print '#define NR_TRACE_EVENTS %d' % (event.num + 1)
> +    print '#define NR_TRACE_EVENTS %d' % len(events)
>
>   def stderr_c(events):
>       print '''#include "trace.h"
> @@ -475,8 +475,7 @@ import re
>   cre = re.compile("(?P<name>[^(\s]+)\((?P<args>[^)]*)\)\s*(?P<fmt>\".*\")?")
>
>   class Event(object):
> -    def __init__(self, num, line):
> -        self.num = num
> +    def __init__(self, line):
>           m = cre.match(line)
>           assert m is not None
>           groups = m.groupdict('')
> @@ -491,14 +490,12 @@ class Event(object):
>   # Generator that yields Event objects given a trace-events file object
>   def read_events(fobj):
>       res = []
> -    event_num = 0
>       for line in fobj:
>           if not line.strip():
>               continue
>           if line.lstrip().startswith('#'):
>   	    continue
> -	res.append(Event(event_num, line))
> -	event_num += 1
> +	res.append(Event(line))
>       return res
>
>   backend = ""
>
>
Stefan Hajnoczi Jan. 18, 2012, 10:34 a.m. UTC | #2
On Wed, Jan 18, 2012 at 9:48 AM, Harsh Bora <harsh@linux.vnet.ibm.com> wrote:
> On 01/11/2012 11:35 PM, Lluís Vilanova wrote:
>>
>> This would otherwise break event numbering when actually using the
>> "disable"
>> property.
>>
>
> IIUC, event numbering does include disabled events too, are you proposing
> not to include disabled events in event numbering ? That will affect
> interpreting event numbers while reading trace logs also.

I agree with Lluís.  Here's how it worked in scripts/tracetool:
disabled events were processed with "nop" backend and therefore did
not increment the event counter in the "simple" backend.

Stefan
diff mbox

Patch

diff --git a/scripts/tracetool.py b/scripts/tracetool.py
index 7a877dc..b7401a3 100755
--- a/scripts/tracetool.py
+++ b/scripts/tracetool.py
@@ -128,7 +128,7 @@  def simple_h(events):
     'args': event.args
 }
     print
-    print '#define NR_TRACE_EVENTS %d' % (event.num + 1)
+    print '#define NR_TRACE_EVENTS %d' % len(events)
     print 'extern TraceEvent trace_list[NR_TRACE_EVENTS];'
 
     return
@@ -154,7 +154,7 @@  def simple_c(events):
         print
     print '};'
     print
-    for event in events:
+    for num, event in enumerate(events):
         argc = event.argc
         print '''void trace_%(name)s(%(args)s)
 {
@@ -169,12 +169,12 @@  def simple_c(events):
 ''' % {
     'name': event.name,
     'args': event.args,
-    'event_id': event.num,
+    'event_id': num,
 }
         print '''
     tbuf_idx = trace_alloc_record(%(event_id)s, %(sizestr)s);
     rec_off = (tbuf_idx + ST_V2_REC_HDR_LEN) %% TRACE_BUF_LEN; /* seek record header */
-''' % {'event_id': event.num, 'sizestr': event.sizestr,}
+''' % {'event_id': num, 'sizestr': event.sizestr,}
 
         if argc > 0:
             str = event.arglist
@@ -220,7 +220,7 @@  def stderr_h(events):
 #include "trace/stderr.h"
 
 extern TraceEvent trace_list[];'''
-    for event in events:
+    for num, event in enumerate(events):
         argnames = event.argnames
         if event.argc > 0:
             argnames = ', ' + event.argnames
@@ -235,12 +235,12 @@  static inline void trace_%(name)s(%(args)s)
 }''' % {
     'name': event.name,
     'args': event.args,
-    'event_num': event.num,
+    'event_num': num,
     'fmt': event.fmt.rstrip('\n'),
     'argnames': argnames
 }
     print
-    print '#define NR_TRACE_EVENTS %d' % (event.num + 1)
+    print '#define NR_TRACE_EVENTS %d' % len(events)
 
 def stderr_c(events):
     print '''#include "trace.h"
@@ -475,8 +475,7 @@  import re
 cre = re.compile("(?P<name>[^(\s]+)\((?P<args>[^)]*)\)\s*(?P<fmt>\".*\")?")
 
 class Event(object):
-    def __init__(self, num, line):
-        self.num = num
+    def __init__(self, line):
         m = cre.match(line)
         assert m is not None
         groups = m.groupdict('')
@@ -491,14 +490,12 @@  class Event(object):
 # Generator that yields Event objects given a trace-events file object
 def read_events(fobj):
     res = []
-    event_num = 0
     for line in fobj:
         if not line.strip():
             continue
         if line.lstrip().startswith('#'):
 	    continue
-	res.append(Event(event_num, line))
-	event_num += 1
+	res.append(Event(line))
     return res
 
 backend = ""