blob: 2b9c01432cda52992c389b25783e70d64c81444a [file] [log] [blame]
/*
* 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 {}