线程线程读取状态

摘要

读取线程状态的一个方面。

声明

#include <zircon/syscalls.h>

zx_status_t zx_thread_read_state(zx_handle_t handle,
                                 uint32_t kind,
                                 void* buffer,
                                 size_t buffer_size);

说明

zx_thread_read_state() 会读取线程状态的一个方面。线程 只有在线程因异常或线程停止运行时,才能读取状态 已暂停。

线程状态在很大程度上取决于处理器。查看以下结构中的结构: zircon/syscalls/debug.h,了解每个平台上的结构内容。

省/自治区/直辖市

ZX_THREAD_STATE_GENERAL_REGS

缓冲区必须指向一个 zx_thread_state_general_regs_t 结构, 包含当前架构的通用寄存器。

ZX_THREAD_STATE_FP_REGS

缓冲区必须指向 zx_thread_state_fp_regs_t 结构。在 64 位设备上 ARM 平台,浮点状态位于矢量寄存器中,此结构 为空。

ZX_THREAD_STATE_VECTOR_REGS

缓冲区必须指向 zx_thread_state_vector_regs_t 结构。

ZX_THREAD_STATE_DEBUG_REGS

缓冲区必须指向 zx_thread_state_debug_regs_t 结构。所有输入 字段将被忽略,并使用线程的实际值覆盖它们。

ZX_THREAD_STATE_SINGLE_STEP

缓冲区必须指向 zx_thread_state_single_step_t 值,该值为 可能包含 0(正常运行)或 1(启用单步进)。

权限

handle 的类型必须为 ZX_OBJ_TYPE_THREAD 且包含 ZX_RIGHT_READ

返回值

如果成功,zx_thread_read_state() 会返回 ZX_OK。 如果失败,则返回负的错误值。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

ZX_ERR_WRONG_TYPE handle 不是线程的句柄。

ZX_ERR_ACCESS_DENIED handle 缺少 ZX_RIGHT_READ

ZX_ERR_INVALID_ARGS 种类无效,或 buffer 是无效的指针。

ZX_ERR_NO_MEMORY 因内存不足而失败。 用户空间没有好办法处理这种(不太可能)错误。 在将来的版本中,此错误不会再发生。

ZX_ERR_BUFFER_TOO_SMALL 缓冲区长度 buffer_size 过小, 用于保存 kind 所需的数据。

ZX_ERR_BAD_STATE:表示线程未在状态 可用。只有在线程由于以下原因停止运行时,才能读取线程状态: 例外情况。

不支持 ZX_ERR_NOT_SUPPORTED kind。 例如,在尝试读取一个 当前运行程序的硬件不支持。

另请参阅

thread_write_state.