// 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.boot;

/// Protocol for retrieving boot item payloads.
[Discoverable, ForDeprecatedCBindings]
protocol Items {
    /// Get a `payload` for a boot item of `type` and `extra`.
    /// NOTE: We return the `length` of the item, as VMOs must be page-aligned.
    ///
    /// For a list of `type`s, refer to <zircon/boot/image.h>.
    /// For a list of `extra`s, refer to <zircon/boot/driver-config.h>.
    Get(uint32 type, uint32 extra) -> (handle<vmo>? payload, uint32 length);
};
