blob: f211263d095c82836d8ef61deaaa1b1487b4c7a2 [file] [log] [blame]
// Copyright 2019 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;
/// The maximum length, in bytes, of data sink or configuration name.
/// TODO(mcgrathr): Align this with file name limits in some fs protocol.
const uint64 MAX_NAME = 1024;
/// DebugData defines the interface for instrumentation configuration and data
/// publishing.
[ForDeprecatedCBindings, Discoverable]
protocol DebugData {
/// The program runtime sends a string naming a `data_sink` and transfers
/// the sole 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. The client must
/// transfer the only handle to the VMO (which prevents the VMO being
/// resized without the receiver's knowledge), but it might still have the
/// VMO mapped in and continue to write data to it. Code instrumentation
/// runtimes use this to deliver large binary trace results.
// TODO(mcgrathr): Consider dropping the "sole handle" wording and instead
// just say the receiver is expected to wait for the process to die before
// consuming the VMO.
Publish(string:MAX_NAME data_sink, zx.handle:VMO data);
/// The program runtime names a `config_name` referring to a debug
/// configuration of some kind and gets back a VMO to read configuration
/// data from. The sanitizer runtimes use this to allow large options
/// text to be stored in a file rather than passed directly in environment
/// strings.
LoadConfig(string:MAX_NAME config_name) -> (zx.handle:VMO? config);
};