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

// !!! THIS FILE IS NOT YET USED !!!
// See //zircon/system/public/zircon/syscalls.banjo.
// !!! THIS FILE IS NOT YET USED !!!

library zz;

[Transport="Syscall"]
protocol Job {
    // TODO(ZX-2967): parent_job with ZX_RIGHT_WRITE is also accepted.
    /// Create a new job.
    [In0="handle<job>:rights=MANAGE_JOB",
     Out1="handle<job>:acquire"]
    Create(handle<job> parent_job, uint32 options) -> (status status, handle<job> out);

    /// Set job security and resource policies.
    [In0="handle<job>:rights=SET_POLICY"]
    SetPolicy(handle<job> handle, uint32 options, uint32 topic, vector<byte> policy) ->
        (status status);
};
