zx_task_suspend_token

此函数替换了 task_suspend。更新所有调用方后,zx_task_suspend() 将被删除,此函数将被重命名为 zx_task_suspend()

摘要

暂停给定任务。目前,只能暂停线程或进程句柄。

声明

#include <zircon/syscalls.h>

zx_status_t zx_task_suspend_token(zx_handle_t handle, zx_handle_t* token);

说明

zx_task_suspend_token() 会导致所请求的任务暂停执行。任务暂停不是同步的,任务可能在调用返回之前不会暂停。除非任务当前在内核中被阻塞,否则在调用 zx_task_suspend_token() 后,任务会立即暂停;如果任务当前在内核中被阻塞,则会在解除阻塞后暂停。

对已暂停的任务调用 zx_task_kill() 会成功终止 该任务。

恢复

如需允许任务恢复,请关闭暂停令牌句柄。只要有任何打开的暂停令牌,任务就会保持暂停状态。与暂停一样, 恢复也是异步的,因此即使没有其他暂停令牌 处于打开状态,线程也可能在 zx_handle_close() 调用返回时未处于运行状态。

权限

handle 的类型必须为 ZX_OBJ_TYPE_THREADZX_OBJ_TYPE_PROCESS,并且具有 ZX_RIGHT_WRITE

返回值

zx_task_suspend() 在成功时返回 ZX_OK。 如果失败,则返回负错误值。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

ZX_ERR_WRONG_TYPE handle 不是线程句柄。

ZX_ERR_INVALID_ARGS token 是无效的指针。

ZX_ERR_BAD_STATE 任务未处于可以暂停的状态。

限制

目前仅支持线程句柄。