zx_thread_read_state


英文原文快照


名称

thread_read_state —— 读取线程状态的一个方面的值

概要

  1. #include <zircon/syscalls.h>
  2. #include <zircon/syscalls/debug.h>
  3. zx_status_t zx_thread_read_state(
  4. zx_handle_t handle,
  5. uint32_t kind,
  6. void* buffer,
  7. size_t len);

描述

thread_read_state() 读取线程状态的一个方面的值。 但只有当线程因异常而暂停或被挂起时,才能读取线程的状态。

线程的状态是高度特定于处理器的。 关于每个处理器平台上结构的内容,请参阅zircon/syscalls/debug.h中的结构。

状态值

ZX_THREAD_STATE_GENERAL_REGS

buffer指向包含当前体系结构通用寄存器的zx_thread_state_general_regs_t结构。

ZX_THREAD_STATE_FP_REGS

buffer指向zx_thread_state_fp_regs_t结构。 在64位ARM平台上,浮点数状态位于向量寄存器中,因此该结构为空。

ZX_THREAD_STATE_VECTOR_REGS

buffer指向zx_thread_state_vector_regs_t结构。

ZX_THREAD_STATE_SINGLE_STEP

buffer指向zx_thread_state_single_step_t类型的值,该值可包含0(正常运行)或1(单步执行)。

ZX_THREAD_X86_REGISTER_FS

buffer指向包含uint64的zx_thread_x86_register_fs_t结构。 该状态仅适用于x86平台。

ZX_THREAD_X86_REGISTER_GS

buffer指向包含uint64的zx_thread_x86_register_gs_t结构。 该状态仅适用于x86平台。

权限

TODO(ZX-2399)

返回值

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

错误码

ZX_ERR_BAD_HANDLEhandle是无效句柄。

ZX_ERR_WRONG_TYPEhandle不是线程类型的句柄。

ZX_ERR_ACCESS_DENIEDhandle缺少ZX_RIGHT_READ权限。

ZX_ERR_INVALID_ARGSkind的值无效,或buffer是无效指针。

ZX_ERR_NO_MEMORY:由于内存不足导致的失败。而用户空间无法处理这个(不太可能发生的)错误。在将来的构建版本中,将不再出现此错误。

ZX_ERR_BUFFER_TOO_SMALLbuffer的长度len太小,无法放下kind所需的数据。

ZX_ERR_BAD_STATE:线程未在状态可用的位置停止。 只有当线程因异常而暂停时才能读取线程的状态。

ZX_ERR_NOT_SUPPORTEDkind的值不受支持。 例如,当尝试读取不受当前正在运行的硬件所支持的寄存器集时,可能会发生这种错误。

另见

thread_write_state.