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 句柄不是有效的句柄。

ZX_ERR_WRONG_TYPE 句柄不是线程句柄。

ZX_ERR_INVALID_ARGS token 是无效的指针。

ZX_ERR_BAD_STATE:任务未处于可以挂起的状态。

限制

目前仅支持线程句柄。