zx_task_resume_from_exception


英文原文快照


名称

task_resume_from_exception —— 在报告异常后恢复指定的任务

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_task_resume_from_exception(zx_handle_t task, zx_handle_t port, uint32_t options);

描述

task_resume_from_exception() 的功能是恢复向调试异常端口报告异常后的任务。 port参数应标识要从中恢复异常的异常端口

请注意,如果线程有任何打开的挂起令牌,即使从异常中恢复,该线程也将保持挂起状态。

有两种方法可以从异常中恢复,具体取决于是否希望线程从中断处恢复,这在体系结构相关的异常的情况下通常意味着重试发生异常的指令。 否则交予搜索顺序中的下一个处理程序来处理异常。 有关异常处理的描述,请参见task_bind_exception_port

为了从中断处恢复线程,请将0传递给option

  1. zx_status_t status = zx_task_resume_from_exception(thread, 0);

为了将异常交予搜索顺序中的下一个处理程序来处理,请将ZX_RESUME_TRY_NEXT传递给option参数。

  1. zx_status_t status = zx_task_resume_from_exception(thread, ZX_RESUME_TRY_NEXT);

权限

TODO(ZX-2399)

返回值

task_resume_from_exception() 调用成功则返回ZX_OK。 如果调用失败,则返回负的错误码。

错误码

ZX_ERR_BAD_HANDLEtaskport是无效句柄。

ZX_ERR_WRONG_TYPEtask不是线程类型句柄,或者port不是端口类型句柄。

ZX_ERR_BAD_STATE:任务未处于可以恢复的状态,例如,它已经终止或者没有处于可以从中恢复的异常状态。

ZX_ERR_INVALID_ARGSoptions不合法。

限制

目前仅支持线程类型句柄。

另见

task_bind_exception_port,