blob: 908ef34fd4c9c9a6a88b911d4c71e840fe5d207a [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.
// !!! THIS FILE IS NOT YET USED !!!
// See //zircon/system/public/zircon/syscalls.banjo.
// !!! THIS FILE IS NOT YET USED !!!
library zz;
[Transport="Syscall"]
protocol Task {
// TODO(scottmg): Need something like handle<task> in this file to mean {job, process, thread}.
// Or otherwise some way to express multiple options for constraints on In0 in this protocol.
// TODO(ZX-2967): No rights required on either?
/// Bind to, or unbind from, the exception port corresponding to a given job, process, or thread.
BindExceptionPort(handle handle, handle<port> port, uint64 key, uint32 options) ->
(status status);
/// Suspend the given task. Currently only thread or process handles may be suspended.
[In0="handle:rights=WRITE",
Out1="handle:acquire"]
Suspend(handle handle) -> (status status, handle token);
/// Suspend the given task. Currently only thread or process handles may be suspended.
[In0="handle:rights=WRITE",
Out1="handle:acquire"]
SuspendToken(handle handle) -> (status status, handle token);
/// Resume the given task after an exception has been reported.
// TODO(ZX-2967): No rights required on either?
ResumeFromException(handle<thread> handle, handle<port> port, uint32 options) ->
(status status);
/// Create an exception channel for a given job, process, or thread.
[In0="handle:rights=DUPLICATE,INSPECT,MANAGE_THREAD,TRANSFER",
Out1="handle<channel>:acquire"]
// TODO(scottmg): Express "If handle is of type ZX_OBJ_TYPE_JOB or ZX_OBJ_TYPE_PROCESS, it must
// have ZX_RIGHT_ENUMERATE."
CreateExceptionChannel(handle handle, uint32 options) -> (status status, handle<channel> out);
/// Kill the provided task (job, process, or thread).
[In0="handle:rights=DESTROY"]
Kill(handle handle) -> (status status);
};