/* * 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"; import "protos/perfetto/common/builtin_clock.proto"; package perfetto.protos; // A snapshot of clock readings to allow for trace alignment. message ClockSnapshot { message Clock { // DEPRECATED. This enum has moved to ../common/builtin_clock.proto. enum BuiltinClocks { UNKNOWN = 0; REALTIME = 1; REALTIME_COARSE = 2; MONOTONIC = 3; MONOTONIC_COARSE = 4; MONOTONIC_RAW = 5; BOOTTIME = 6; BUILTIN_CLOCK_MAX_ID = 63; reserved 7, 8; } // Clock IDs have the following semantic: // [1, 63]: Builtin types, see BuiltinClock from // ../common/builtin_clock.proto. // [64, 127]: User-defined clocks. These clocks are sequence-scoped. They // are only valid within the same |trusted_packet_sequence_id| // (i.e. only for TracePacket(s) emitted by the same TraceWriter // that emitted the clock snapshot). // [128, MAX]: Reserved for future use. The idea is to allow global clock // IDs and setting this ID to hash(full_clock_name) & ~127. optional uint32 clock_id = 1; // Absolute timestamp. Unit is ns unless specified otherwise by the // unit_multiplier_ns field below. optional uint64 timestamp = 2; // When true each TracePacket's timestamp should be interpreted as a delta // from the last TracePacket's timestamp (referencing this clock) emitted by // the same packet_sequence_id. Should only be used for user-defined // sequence-local clocks. The first packet timestamp after each // ClockSnapshot that contains this clock is relative to the |timestamp| in // the ClockSnapshot. optional bool is_incremental = 3; // Allows to specify a custom unit different than the default (ns) for this // clock domain. A multiplier of 1000 means that a timestamp = 3 should be // interpreted as 3000 ns = 3 us. All snapshots for the same clock within a // trace need to use the same unit. optional uint64 unit_multiplier_ns = 4; } repeated Clock clocks = 1; // The authoritative clock domain for the trace. Defaults to BOOTTIME, but can // be overridden in TraceConfig's builtin_data_sources. Trace processor will // attempt to translate packet/event timestamps from various data sources (and // their chosen clock domains) to this domain during import. optional BuiltinClock primary_trace_clock = 2; }