zx_thread_read_state

摘要

讀取執行緒狀態的一個方面。

宣告

#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 帳號代碼不是有效的帳號代碼。

ZX_ERR_WRONG_TYPE 的「處理常式」不是執行緒的類型。

ZX_ERR_ACCESS_DENIED 帳號代碼缺少 ZX_RIGHT_READ

ZX_ERR_INVALID_ARGS Kind 無效,或 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.