blob: 0f0350a0b040ce07ce6e357b3a573133792ea63f [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;
/// The maximum length, in bytes, of data sink or configuration name.
const uint64 MAX_NAME = 1024;
/// DebugData defines the interface for instrumentation configuration and data publishing.
[Layout = "Simple", 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 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.
Publish(string:MAX_NAME data_sink, 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) -> (handle<vmo>? config);