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