/* * Copyright (C) 2024 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; // IPC interface definition for serving the requests from the relay service. service RelayPort { // Synchronize the clocks with a guest. This is used for multi-machine tracing // with a VM guest or a remote machine. The client may make consecutive calls // of this method to get better results. rpc SyncClock(SyncClockRequest) returns (SyncClockResponse) {} } // For the client to send its clock readings to the host. message SyncClockRequest { // Relay service synchronizes its clocks with the host using round-trip // messages of clock snapshots on both sides for an estimation of clock // offsets of the built-in clocks. enum Phase { // Clock synchronization starts with the client (relay service) sends its // clock snapshots in the PING phase. The host also snapshots its clocks on // receiving the request and acks the client. PING = 1; // Clock synchronization completes with the client sending the second clock // snapshot request after the round-trip of the PING request. The host // estimates the clock offsets using 2 consecutive clock snapshots on both // sides. UPDATE = 2; }; message Clock { // The clock ID enumerated in builtin_clocks.proto. optional uint32 clock_id = 1; // The clock reading value (e.g. in nanoseconds for BUILTIN_CLOCK_BOOTTIME). optional uint64 timestamp = 2; } optional Phase phase = 1; repeated Clock clocks = 2; } // The host doesn't send any information back to the client. message SyncClockResponse {}