| // Copyright 2019 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.device.manager; |
| |
| using zx; |
| |
| /// Provides administration services for the device manager service and the device tree it controls. |
| @discoverable |
| protocol Administrator { |
| // TODO(fxbug.dev/68529): Remove this API. |
| /// This is a temporary API until DriverManager can ensure that base drivers |
| /// will be shut down automatically before fshost exits. This will happen |
| /// once drivers-as-components is implemented. |
| /// In the meantime, this API should only be called by fshost, and it must |
| /// be called before fshost exits. This function iterates over the devices |
| /// and suspends any device whose driver lives in storage. This API must be |
| /// called by fshost before it shuts down. Otherwise the devices that live |
| /// in storage may page fault as it access memory that should be provided by |
| /// the exited fshost. This function will not return until the devices are |
| /// suspended. If there are no devices that live in storage, this function |
| /// will immediatetly return. |
| UnregisterSystemStorageForShutdown() -> (struct { |
| status zx.status; |
| }); |
| }; |