// 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.hardware.block;

using zx;

/// It is treated as a separate protocol for extension if necessary.
closed protocol InspectVmoProvider {
    /// Requests the inspect vmo from the entity.
    ///  - |vmo| has |ZX_RIGHTS_DUPLICATE|, |ZX_RIGHTS_TRANSFER|, |ZX_RIGHTS_READ|
    strict GetVmo() -> (resource struct {
        vmo zx.Handle:VMO;
    }) error zx.Status;
};

closed protocol Ftl {
    compose InspectVmoProvider;

    /// Discards previous contents and reinitializes the device.
    strict Format() -> (struct {
        status zx.Status;
    });
};
