blob: c86f8b1a269b965d2f6267c540d8527d0b6180f3 [file] [log] [blame]
// 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;
using zx;
const MAX_FILE_NAME_LENGTH uint8 = 255;
/// Protocol for retrieving boot item payloads.
@discoverable
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.
///
/// TODO: Refactor API: fxbug.dev/34597
///
/// 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(struct {
type uint32;
extra uint32;
}) -> (resource struct {
payload zx.handle:<VMO, optional>;
length uint32;
});
/// Get all stored items of `type`, optionally also restricted by `extra`. Note that
/// length is returned for each item as VMOs are page-aligned.
///
/// Returns ZX_ERR_NOT_SUPPORTED if this is an untracked item which will never be stored.
@transitional
Get2(struct {
type uint32;
extra box< struct {
n uint32;
}>;
}) -> (resource struct {
retrieved_items vector< resource struct {
payload zx.handle:VMO;
length uint32;
extra uint32;
}>:MAX;
}) error zx.status;
/// Gets the `payload` for a `ZBI_TYPE_BOOTLOADER_FILE` boot item.
/// Note: ZX_PROP_VMO_CONTENT_SIZE will be set to the actual file content size
GetBootloaderFile(struct {
filename string:MAX_FILE_NAME_LENGTH;
}) -> (resource struct {
payload zx.handle:<VMO, optional>;
});
};