3 Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
8 <link rel="import" href="/tracing/importer/linux_perf/parser.html">
14 * @fileoverview Parses graph_ent and graph_ret events that were inserted by
15 * the Linux kernel's function graph trace.
17 tvcm.exportTo('tracing.importer.linux_perf', function() {
19 var LinuxPerfParser = tracing.importer.linux_perf.Parser;
22 * Parses graph_ent and graph_ret events that were inserted by the Linux
23 * kernel's function graph trace.
26 function KernelFuncParser(importer) {
27 LinuxPerfParser.call(this, importer);
29 importer.registerEventHandler('graph_ent',
30 KernelFuncParser.prototype.traceKernelFuncEnterEvent.
32 importer.registerEventHandler('graph_ret',
33 KernelFuncParser.prototype.traceKernelFuncReturnEvent.
36 this.model_ = importer.model_;
42 var funcEnterRE = new RegExp('func=(.+)');
43 TestExports.funcEnterRE = funcEnterRE;
45 KernelFuncParser.prototype = {
46 __proto__: LinuxPerfParser.prototype,
48 traceKernelFuncEnterEvent: function(eventName, cpuNumber, pid, ts,
50 var eventData = funcEnterRE.exec(eventBase.details);
54 if (eventBase.tgid === undefined) {
58 var tgid = parseInt(eventBase.tgid);
59 var name = eventData[1];
60 var thread = this.model_.getOrCreateProcess(tgid)
61 .getOrCreateThread(pid);
62 thread.name = eventBase.threadName;
64 var slices = thread.kernelSliceGroup;
65 if (!slices.isTimestampValidForBeginOrEnd(ts)) {
66 this.model_.importWarning({
68 message: 'Timestamps are moving backward.'
73 var slice = slices.beginSlice(null, name, ts, {});
78 traceKernelFuncReturnEvent: function(eventName, cpuNumber, pid, ts,
80 if (eventBase.tgid === undefined) {
84 var tgid = parseInt(eventBase.tgid);
85 var thread = this.model_.getOrCreateProcess(tgid)
86 .getOrCreateThread(pid);
87 thread.name = eventBase.threadName;
89 var slices = thread.kernelSliceGroup;
90 if (!slices.isTimestampValidForBeginOrEnd(ts)) {
91 this.model_.importWarning({
93 message: 'Timestamps are moving backward.'
98 if (slices.openSliceCount > 0) {
106 LinuxPerfParser.registerSubtype(KernelFuncParser);
109 KernelFuncParser: KernelFuncParser