总结
将会话移出受限模式。
声明
#include <zircon/syscalls-next.h>
zx_status_t zx_restricted_kick(zx_handle_t thread, uint32_t options);
说明
如果某个线程当前是在受限模式下运行,则将其从受限模式中排除;如果线程未在受限模式下运行,则保存待处理的启动。如果目标线程在受限模式下运行,它将通过提供给 zx_restricted_enter
的入口点退出普通模式,原因代码设置为 ZX_RESTRICTED_REASON_KICK
。否则,对 zx_restricted_enter
的下一次调用将不会进入受限模式,而是会分派到原因代码为 ZX_RESTRICTED_REASON_KICK
的提供的入口点。
同一线程对象的多个踢出会合并在一起。因此,如果多个线程在运行或进入受限模式时对其调用 zx_restricted_kick
,则至少会观察到一个(但可能会多次)返回 ZX_RESTRICTED_REASON_KICK
。使用此系统调用的建议方法是,先记录启动已同步数据结构的原因,然后再调用 zx_restricted_kick
。每当调用 zx_restricted_enter
的线程观察到 ZX_RESTRICTED_REASON_KICK
并处理任何待处理状态时,它都应该查询此数据结构,然后再重新进入受限模式。
options 必须为零。
权限
thread 需要 ZX_RIGHT_MANAGE_THREAD
。
错误
ZX_ERR_INVALID_ARGS
options 是 0 以外的任何值。
ZX_ERR_WRONG_TYPE
thread 不是线程。
ZX_ERR_ACCESS_DENIED
会话没有 ZX_RIGHT_MANAGE_THREAD。
ZX_ERR_BAD_STATE
thread 已终止。