這個函式會取代 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() 會成功終止任務。
RESUMING
如要允許工作繼續執行,請關閉暫停權杖控制代碼。只要有任何未使用的暫停權杖,工作就會維持暫停狀態。與暫停一樣,繼續作業是非同步的,因此即使沒有其他暫停權杖處於開啟狀態,當 zx_handle_close() 呼叫傳回時,執行緒可能不會處於執行狀態。
權限
handle 必須是 ZX_OBJ_TYPE_THREAD 或 ZX_OBJ_TYPE_PROCESS 類型,且具有 ZX_RIGHT_WRITE。
傳回值
zx_task_suspend() 會在成功時傳回 ZX_OK。
如果失敗,系統會傳回負數錯誤值。
錯誤
「ZX_ERR_BAD_HANDLE」handle 不是有效的控制代碼。
ZX_ERR_WRONG_TYPE handle 不是執行緒控制代碼。
ZX_ERR_INVALID_ARGS token 是無效指標。
ZX_ERR_BAD_STATE 工作目前無法暫停。
限制
目前僅支援執行緒控制代碼。