blob: cfc3f33d64804fa049cba2ffb6e542be902b48cb [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.
library fuchsia.sysmem;
using fuchsia.io;
//
// Needs ForDeprecatedCBindings because used with "FIDL Simple C Bindings".
/// Once a channel with this interface is established to a driver (typically in
/// advance), this interface allows asynchronously sending the server end of an
/// Allocator channel which will be served by the driver.
///
/// For now, the only FIDL interface directly served via normal devhost FIDL
/// dispatching code by the sysmem driver is this interface. Other sysmem
/// interfaces are served by separate dispatching code primarily because we want
/// to be able to establish channels async by sending the server channel toward
/// the driver without needing a round-trip open and without managing the channel
/// as a file descriptor.
///
/// A secondary current reason tracked by fxbug.dev/32924 is that the current devhost
/// dispatching code doesn't permit async processing of requests, which we want
/// for proper functioning of at least the BufferCollection interface since
/// that interface has requests that don't complete until the devhost has
/// constraints from other participants.
@discoverable
@for_deprecated_c_bindings
protocol DriverConnector {
/// This one-way message sends in the server end of an Allocator channel.
///
/// `allocator_request` will be served by the sysmem driver (or the channel
/// will close).
Connect(resource struct {
allocator_request server_end:Allocator;
});
SetAuxServiceDirectory(resource struct {
service_directory client_end:fuchsia.io.Directory;
});
};