blob: f4ed43f3deb5a6eb006eaba0410848cf3c7aa0a0 [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
syntax = "proto2";
package perfetto.protos;
message ChromeTracedValue {
enum NestedType {
DICT = 0;
ARRAY = 1;
}
optional NestedType nested_type = 1;
repeated string dict_keys = 2;
repeated ChromeTracedValue dict_values = 3;
repeated ChromeTracedValue array_values = 4;
optional int32 int_value = 5;
optional double double_value = 6;
optional bool bool_value = 7;
optional string string_value = 8;
}
message ChromeStringTableEntry {
optional string value = 1;
optional int32 index = 2;
}
// Deprecated, use TrackEvent protos instead.
message ChromeTraceEvent {
message Arg {
optional string name = 1;
oneof value {
bool bool_value = 2;
uint64 uint_value = 3;
int64 int_value = 4;
double double_value = 5;
string string_value = 6;
// Pointers are stored in a separate type as the JSON output treats them
// differently from other uint64 values.
uint64 pointer_value = 7;
string json_value = 8;
ChromeTracedValue traced_value = 10;
}
// Takes precedence over |name| if set,
// and is an index into |string_table|.
optional uint32 name_index = 9;
}
optional string name = 1;
optional int64 timestamp = 2;
optional int32 phase = 3;
optional int32 thread_id = 4;
optional int64 duration = 5;
optional int64 thread_duration = 6;
optional string scope = 7;
optional uint64 id = 8;
optional uint32 flags = 9;
optional string category_group_name = 10;
optional int32 process_id = 11;
optional int64 thread_timestamp = 12;
optional uint64 bind_id = 13;
repeated Arg args = 14;
// Takes precedence over respectively |name| and
// |category_group_name_index| if set,
// and are indices into |string_table|.
optional uint32 name_index = 15;
optional uint32 category_group_name_index = 16;
}
message ChromeMetadata {
optional string name = 1;
oneof value {
string string_value = 2;
bool bool_value = 3;
int64 int_value = 4;
string json_value = 5;
}
}
// Subtraces produced in legacy json format by Chrome tracing agents not yet
// updated to support the new binary format, e.g. ETW and CrOS ARC.
// TODO(eseckler): Update these agents to become perfetto producers.
message ChromeLegacyJsonTrace {
enum TraceType {
USER_TRACE = 0;
// Deprecated.
SYSTEM_TRACE = 1;
}
optional TraceType type = 1;
optional string data = 2;
}
message ChromeEventBundle {
// Deprecated, use TrackEvent protos instead.
repeated ChromeTraceEvent trace_events = 1 [deprecated = true];
// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
// which contains typed fields.
repeated ChromeMetadata metadata = 2;
// ftrace output from CrOS and Cast system tracing agents.
// TODO(eseckler): Replace system traces with native perfetto service.
repeated string legacy_ftrace_output = 4;
repeated ChromeLegacyJsonTrace legacy_json_trace = 5;
// Contents of a string table that's valid for
// the whole ChromeEventBundle entry.
repeated ChromeStringTableEntry string_table = 3 [deprecated = true];
}