摘要
讀取執行緒狀態的一個方面。
宣告
#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。
舉例來說,如果嘗試讀取的暫存器集
不支援執行程式的硬體。