blob: 8f642e8ad53b19e7afa8a67acf24dcbbbf1eb7e9 [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);
};