2
0
Эх сурвалжийг харах

simpletrace: fix timestamp argument type

The timestamp argument to a trace event method is documented as follows:

  The method can also take a timestamp argument before the trace event
  arguments:

    def runstate_set(self, timestamp, new_state):
        ...

  Timestamps have the uint64_t type and are in nanoseconds.

In reality methods with a timestamp argument actually receive a tuple
like (123456789,) as the timestamp argument.  This is due to a bug in
simpletrace.py.

This patch unpacks the tuple so that methods receive the correct
timestamp argument type.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20180222163901.14095-1-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Stefan Hajnoczi 7 жил өмнө
parent
commit
e42860ae83

+ 1 - 1
scripts/simpletrace.py

@@ -199,7 +199,7 @@ def build_fn(analyzer, event):
         fn_argcount = len(inspect.getargspec(fn)[0]) - 1
         fn_argcount = len(inspect.getargspec(fn)[0]) - 1
         if fn_argcount == event_argcount + 1:
         if fn_argcount == event_argcount + 1:
             # Include timestamp as first argument
             # Include timestamp as first argument
-            return lambda _, rec: fn(*((rec[1:2],) + rec[3:3 + event_argcount]))
+            return lambda _, rec: fn(*(rec[1:2] + rec[3:3 + event_argcount]))
         elif fn_argcount == event_argcount + 2:
         elif fn_argcount == event_argcount + 2:
             # Include timestamp and pid
             # Include timestamp and pid
             return lambda _, rec: fn(*rec[1:3 + event_argcount])
             return lambda _, rec: fn(*rec[1:3 + event_argcount])