aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Tardy <tardyp@gmail.com>2010-12-24 00:04:38 +0100
committerPierre Tardy <tardyp@gmail.com>2011-01-03 20:13:48 +0100
commit3d2b9a7874025504ad6119245370510f785b3b22 (patch)
tree66e79234d38987f81bc5126a1d8f47c7e7627ff1
parenta42de6ac447e66692f114adafe1903124322e06d (diff)
backend/perf: make this backend work again with new archrefactor
Signed-off-by: Pierre Tardy <tardyp@gmail.com>
-rw-r--r--timechart/backends/perf.py30
1 files changed, 20 insertions, 10 deletions
diff --git a/timechart/backends/perf.py b/timechart/backends/perf.py
index 5bd17dd..f1cff8f 100644
--- a/timechart/backends/perf.py
+++ b/timechart/backends/perf.py
@@ -1,31 +1,41 @@
-
+import os
+from timechart.model import tcProject
+from timechart.window import tcWindow
class Event():
def __init__(self,name,kw):
self.__dict__=kw
self.event = name
self.timestamp = self.common_s*1000000+self.common_ns/1000
-
+ self.linenumber = 0
+def get_partial_text(fn,start,end):
+ return "text trace unsupported with perf backend"
def trace_begin():
global proj
- proj = TimechartProject()
- proj.start_parsing()
+ proj = tcProject()
+ proj.start_parsing(get_partial_text)
def trace_end():
proj.finish_parsing()
# Create and open the main window.
- window = TimechartWindow(project = proj)
+ window = tcWindow(project = proj)
window.configure_traits()
def trace_unhandled(event_name, context, field_dict):
event_name = event_name[event_name.find("__")+2:]
- proj.ftrace_callback(Event(event_name,field_dict))
+ proj.handle_trace_event(Event(event_name,field_dict))
def load_perf(filename):
- # @todo revisit with subprocess
- os.setcwd(os.path.dirname(filename))
- os.system("perf trace -s %s &"%(__file__))
+ dotpy = __file__
+ # perf python wants a .py file and not .pyc...
+ if dotpy.endswith("pyc"):
+ dotpy = dotpy[:-1]
+ perf = "perf"
+ if "PERF" in os.environ:
+ perf = os.environ["PERF"]
+ os.execlp(perf, perf, "trace", "-i", filename, "-s", dotpy)
return None
def detect_perf(filename):
- if os.path.basename(filename) == "perf.dat":
+ name, ext = os.path.splitext(os.path.basename(filename))
+ if ext == ".data":
return load_perf
return None