blob: a1b57e0d19429c0051d7149e3edf5ce48e5a20db [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.debugdata;
using zx;
/// Publisher defines the interface for publishing instrumentation data.
protocol Publisher {
/// The program runtime sends a string naming a `data_sink` and transfers
/// the handle to a VMO containing the `data` it wants published
/// there. The `data_sink` string identifies a type of data, and the
/// VMO's object name can specifically identify the data set in this VMO.
/// The ZX_PROP_VMO_CONTENT_SIZE property should be set on the VMO to
/// indicate the precise size of the data in case that is not whole pages;
/// however, leaving it unset (i.e. 0) is acceptable when the whole-page
/// size of the VMO is the intended size of dump. Code instrumentation
/// runtimes use this to deliver large binary trace results. In such cases,
/// the client can resize the VMO and should use the `vmo_token` handle to
/// signal when the VMO is ready for processing by the recipient. The
/// receiver will not process the VMO until the peer of `vmo_token` handle
/// is closed. Therefore, the client should retain the peer handle until
/// it has completed all writes to the VMO.
Publish(resource struct {
data zx.handle:VMO;
vmo_token zx.handle:EVENTPAIR;