zx_task_suspend
名称
task_suspend —— 挂起指定的任务。 目前只有线程句柄可以被挂起。
概要
#include <zircon/syscalls.h>
void zx_task_suspend(zx_handle_t task, zx_handle_t* suspend_token);
描述
task_suspend() 可使被请求的任务挂起并暂停执行。 任务的挂起不是同步执行的,并且在该调用返回之前可能都不会挂起任务。 调用task_suspend() 后,任务将很快被挂起,除非它当前在内核中处于被阻塞的状态,在这种情况下,它将在被解除阻塞后立即挂起。
在挂起的任务上调用task_kill() 可以成功终止任务。
恢复
挂起令牌(suspend token)句柄被关闭时,可以使得任务被恢复,但只要有任何打开的挂起令牌存在,任务都将保持挂起状态。 与任务挂起一样,恢复也是异步的,因此当handle_close调用返回时,即使没有其他挂起令牌处于打开状态,线程也可能尚未处于运行状态。
权限
TODO(ZX-2399)
返回值
task_suspend() 调用成功则返回ZX_OK。 如果调用失败,则返回负的错误码。
错误码
ZX_ERR_BAD_HANDLE:handle是无效句柄。
ZX_ERR_WRONG_TYPE:handle不是线程类型句柄。
ZX_ERR_INVALID_ARGS:suspend_token是无效指针。
ZX_ERR_BAD_STATE:任务未处于可以被挂起的状态。
限制
目前仅支持线程句柄的参数。