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

// TODO(fxb/39732): This should be read as "library zx".
library zz;

[Transport = "Syscall"]
protocol resource {
    /// Create a resource object.
    /// Rights: parent_rsrc must be of type ZX_OBJ_TYPE_RESOURCE and have ZX_RIGHT_WRITE.
    resource_create(handle<resource> parent_rsrc,
                    uint32 options,
                    uint64 base,
                    usize size,
                    string name)
        -> (status status, handle<resource> resource_out);
};
