zx_restricted_kick

总结

将会话移出受限模式。

声明

#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 已终止。