zx_task_resume_from_exception
名称
task_resume_from_exception —— 在报告异常后恢复指定的任务
概要
#include <zircon/syscalls.h>
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:
zx_status_t status = zx_task_resume_from_exception(thread, 0);
为了将异常交予搜索顺序中的下一个处理程序来处理,请将ZX_RESUME_TRY_NEXT传递给option参数。
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_HANDLE:task或port是无效句柄。
ZX_ERR_WRONG_TYPE:task不是线程类型句柄,或者port不是端口类型句柄。
ZX_ERR_BAD_STATE:任务未处于可以恢复的状态,例如,它已经终止或者没有处于可以从中恢复的异常状态。
ZX_ERR_INVALID_ARGS:options不合法。
限制
目前仅支持线程类型句柄。