這個函式會取代 task_suspend。更新所有呼叫端後,zx_task_suspend()
就會刪除,這個函式將重新命名為 zx_task_suspend()
。
摘要
暫停指定工作。目前只能暫停執行緒或程序帳號代碼。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_task_suspend_token(zx_handle_t handle, zx_handle_t* token);
說明
zx_task_suspend_token()
會使要求的工作暫停執行。工作暫停作業不會同步,而且工作可能不會在呼叫傳回前暫停。除非在核心中目前遭到封鎖,否則任務會在 zx_task_suspend_token()
叫用後立即暫停。在這種情況下,任務在解除封鎖後會暫停。
針對已暫停的工作叫用 zx_task_kill()
,系統會成功終止該工作。
繼續播放
如要繼續執行工作,請關閉暫停權杖控制代碼。只要仍有未解決的暫停權杖,這項工作就會保持暫停。與暫停一樣,恢復是非同步的,因此當 zx_handle_close()
呼叫傳回時,即使沒有其他暫停權杖,執行緒也不會處於執行中狀態。
權限
handle 必須是 ZX_OBJ_TYPE_THREAD
或 ZX_OBJ_TYPE_PROCESS
類型,且具有 ZX_RIGHT_WRITE
。
傳回值
zx_task_suspend()
會在成功時傳回 ZX_OK
。如果失敗,系統會傳回負值錯誤值。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
處理常式不是執行緒控點。
ZX_ERR_INVALID_ARGS
符記是無效指標。
ZX_ERR_BAD_STATE
工作未處於可暫停的狀態。
限制
目前僅支援執行緒帳號代碼。