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

using zx;

/// Protocol for providing the root job.
///
/// TODO(https://fxbug.dev/42109098): Do not use this without first consulting the Zircon team.
@discoverable
closed protocol RootJob {
    /// Get the root `job`.
    strict Get() -> (resource struct {
        job zx.Handle:JOB;
    });
};

/// Protocol for providing the root job with restricted rights, specifically:
/// INSPECT | ENUMERATE | DUPLICATE | TRANSFER
@discoverable
closed protocol RootJobForInspect {
    compose RootJob;
};
