blob: de2a38299e7c60b24d09503398060ed1a5302593 [file] [log] [blame]
// Copyright 2022 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.driver.host;
using fuchsia.driver.framework;
using zx;
/// Protocol through which a driver's lifecycle can be managed.
///
/// The Driver Runner will call Stop() on this protocol to indicate that the
/// Driver Host should stop the Driver. The Driver Host should close the
/// server end of the channel with an epitath to signal that the driver has
/// been stopped.
///
/// EPITAPH
///
/// This protocol sends a FIDL epitaph to indicate that the driver instance
/// has been terminated correctly. The Driver Host must send an epitaph of
/// ZX_OK in order to indicate the Driver was Stopped correctly.
/// Not sending an epitaph, or sending an error, will cause Driver Runner
/// to log an error.
protocol Driver {
/// Request that the Driver is Stopped.
///
/// After stopping the driver instance, the server should close this
/// connection with an epitath. This signals that the Driver has been
/// stopped.
Stop();
};
/// Protocol through which a driver host can be managed.
@discoverable
protocol DriverHost {
/// Start a driver within a driver host.
Start(resource struct {
start_args fuchsia.driver.framework.DriverStartArgs;
driver server_end:Driver;
});
/// Returns the process KOID of the driver host.
GetProcessKoid() -> (struct {
koid uint64;
}) error zx.status;
};