zx_task_suspend


英文原文快照


此函数将替换task_suspend。 在更新它的所有调用者后,将删除task_suspend,并将此函数重命名为task_suspend

名称

task_suspend_token —— 挂起指定的任务。 目前只有线程句柄可被用于挂起。

概要

  1. #include <zircon/syscalls.h>
  2. 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_HANDLEhandle是无效句柄。

ZX_ERR_WRONG_TYPEhandle不是线程类型句柄。

ZX_ERR_INVALID_ARGSsuspend_token是无效指针。

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

限制

目前仅支持线程句柄的参数。