| // Copyright 2018 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.ldsvc; |
| |
| using zx; |
| |
| // See //zircon/docs/program_loading.md for a more complete |
| // description of this and related process bootstrapping protocols, and |
| // for specifics about the default global loader service's |
| // interpretation of names, paths, and configurations. |
| |
| // WARNING: This interface is manually implemented in libldmsg.a. Please |
| // update that implementation if you change this protocol. |
| |
| [Layout = "Simple"] |
| interface Loader { |
| // Cleanly shutdown the connection to the Loader service. |
| 1: Done(); |
| |
| // The dynamic linker sends |object_name| and gets back a VMO |
| // handle containing the file. |
| 2: LoadObject(string:1024 object_name) -> (zx.status rv, handle<vmo>? object); |
| |
| // The program loader sends the script |interpreter_name| from |
| // hashbang and gets back a VMO to execute in place of the script. |
| 3: LoadScriptInterpreter(string:1024 interpreter_name) -> (zx.status rv, handle<vmo>? object); |
| |
| // The dynamic linker sends a |config| identifying its load |
| // configuration. This is intended to affect how later |
| // |LoadObject| requests decide what particular implementation |
| // file to supply for a given name. |
| 4: Config(string:1024 config) -> (zx.status rv); |
| |
| // Obtain a new loader service connection. |
| 5: Clone(request<Loader> loader) -> (zx.status rv); |
| |
| // 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. |
| // |
| // This is intended to be a developer-oriented feature and might |
| // not ordinarily be available in production runs. |
| 7: DebugPublishDataSink(string:1024 data_sink, handle<vmo> data) -> (zx.status rv); |
| |
| // 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. |
| // |
| // This is intended to be a developer-oriented feature and might |
| // not ordinarily be available in production runs. |
| 8: DebugLoadConfig(string:1024 config_name) -> (zx.status rv, handle<vmo>? config); |
| }; |