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