blob: 8ad4dd29515b7c8718ba3a5007f7d1577d79cf6c [file] [log] [blame]
// 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.
@available(added=7)
library fuchsia.ldsvc;
using zx;
// WARNING: This interface is manually implemented in libldmsg.a. Please
// update that implementation if you change this protocol.
/// See //docs/concepts/process/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.
closed protocol Loader {
/// Cleanly shutdown the connection to the Loader service.
strict Done();
/// The dynamic linker sends `object_name` and gets back a VMO
/// handle containing the file.
strict LoadObject(struct {
object_name string:1024;
}) -> (resource struct {
rv zx.Status;
object zx.Handle:<VMO, optional>;
});
/// 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.
strict Config(struct {
config string:1024;
}) -> (struct {
rv zx.Status;
});
/// Obtain a new loader service connection.
strict Clone(resource struct {
loader server_end:Loader;
}) -> (struct {
rv zx.Status;
});
};