Summary
Kick a thread out of restricted mode.
Declaration
#include <zircon/syscalls-next.h>
zx_status_t zx_restricted_kick(zx_handle_t thread, uint32_t options);
Description
Kicks a thread out of restricted mode if it is currently running in restricted
mode or saves a pending kick if it is not. If the target thread is running in
restricted mode, it will exit to normal mode through the entry point provided to
zx_restricted_enter
with a reason code set to ZX_RESTRICTED_REASON_KICK
.
Otherwise the next call to zx_restricted_enter
will not enter restricted mode
and will instead dispatch to the provided entry point with reason
code ZX_RESTRICTED_REASON_KICK
.
Multiple kicks on the same thread object are collapsed together. Thus if
multiple threads call zx_restricted_kick
on the same target while it is
running or entering restricted mode, at least one but possibly multiple
ZX_RESTRICTED_REASON_KICK
returns will be observed. The recommended way to use
this syscall is to first record a reason for kicking in a synchronized data
structure and then call zx_restricted_kick
. The thread calling
zx_restricted_enter
should consult this data structure whenever it observes
ZX_RESTRICTED_REASON_KICK
and process any pending state before reentering
restricted mode.
options must be zero.
Rights
ZX_RIGHT_MANAGE_THREAD
is required on thread.
Errors
ZX_ERR_INVALID_ARGS
options is any value other than 0.
ZX_ERR_WRONG_TYPE
thread is not a thread.
ZX_ERR_ACCESS_DENIED
thread does not have ZX_RIGHT_MANAGE_THREAD.
ZX_ERR_BAD_STATE
thread is dead.