| // 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); |
| }; |