diff options
author | Pierre Tardy <tardyp@gmail.com> | 2010-12-24 00:04:38 +0100 |
---|---|---|
committer | Pierre Tardy <tardyp@gmail.com> | 2011-01-03 20:13:48 +0100 |
commit | 3d2b9a7874025504ad6119245370510f785b3b22 (patch) | |
tree | 66e79234d38987f81bc5126a1d8f47c7e7627ff1 | |
parent | a42de6ac447e66692f114adafe1903124322e06d (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.py | 30 |
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 |