1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
8 * @fileoverview Parses EventTrace events in the Windows event trace format.
10 tvcm.require('tracing.importer.etw.parser');
12 tvcm.exportTo('tracing.importer.etw', function() {
14 var Parser = tracing.importer.etw.Parser;
16 // Constants for EventTrace events.
17 var guid = '68FDD900-4A3E-11D1-84F4-0000F80464E3';
18 var kEventTraceHeaderOpcode = 0;
21 * Parses Windows EventTrace trace events.
24 function EventTraceParser(importer) {
25 Parser.call(this, importer);
28 importer.registerEventHandler(guid, kEventTraceHeaderOpcode,
29 EventTraceParser.prototype.decodeHeader.bind(this));
32 EventTraceParser.prototype = {
33 __proto__: Parser.prototype,
35 decodeFields: function(header, decoder) {
36 if (header.version != 2)
37 throw new Error('Incompatible EventTrace event version.');
39 var bufferSize = decoder.decodeUInt32();
40 var version = decoder.decodeUInt32();
41 var providerVersion = decoder.decodeUInt32();
42 var numberOfProcessors = decoder.decodeUInt32();
43 var endTime = decoder.decodeUInt64ToString();
44 var timerResolution = decoder.decodeUInt32();
45 var maxFileSize = decoder.decodeUInt32();
46 var logFileMode = decoder.decodeUInt32();
47 var buffersWritten = decoder.decodeUInt32();
48 var startBuffers = decoder.decodeUInt32();
49 var pointerSize = decoder.decodeUInt32();
50 var eventsLost = decoder.decodeUInt32();
51 var cpuSpeed = decoder.decodeUInt32();
52 var loggerName = decoder.decodeUInteger(header.is64);
53 var logFileName = decoder.decodeUInteger(header.is64);
54 var timeZoneInformation = decoder.decodeTimeZoneInformation();
55 var padding = decoder.decodeUInt32();
56 var bootTime = decoder.decodeUInt64ToString();
57 var perfFreq = decoder.decodeUInt64ToString();
58 var startTime = decoder.decodeUInt64ToString();
59 var reservedFlags = decoder.decodeUInt32();
60 var buffersLost = decoder.decodeUInt32();
61 var sessionNameString = decoder.decodeW16String();
62 var logFileNameString = decoder.decodeW16String();
65 bufferSize: bufferSize,
67 providerVersion: providerVersion,
68 numberOfProcessors: numberOfProcessors,
70 timerResolution: timerResolution,
71 maxFileSize: maxFileSize,
72 logFileMode: logFileMode,
73 buffersWritten: buffersWritten,
74 startBuffers: startBuffers,
75 pointerSize: pointerSize,
76 eventsLost: eventsLost,
78 loggerName: loggerName,
79 logFileName: logFileName,
80 timeZoneInformation: timeZoneInformation,
84 reservedFlags: reservedFlags,
85 buffersLost: buffersLost,
86 sessionNameString: sessionNameString,
87 logFileNameString: logFileNameString
91 decodeHeader: function(header, decoder) {
92 var fields = this.decodeFields(header, decoder);
93 // TODO(etienneb): Update the TraceModel with |fields|.
99 Parser.registerSubtype(EventTraceParser);
102 EventTraceParser: EventTraceParser