zx_restricted_bind_state

摘要

建立受限狀態 VMO 並將其繫結至目前的執行緒。

宣告

#include <zircon/syscalls-next.h>

zx_status_t zx_restricted_bind_state(uint32_t options, zx_handle_t* out_vmo);

說明

建立 VMO 來存放 zx_restricted_state_t。將 VMO 繫結至目前的執行緒,讓後續的 zx_restricted_enter() 呼叫會在進入/退出受限模式時,使用 VMO 還原/儲存受限模式狀態。

雖然傳回的 VMO (out_vmo) 與 zx_vmo_create() 建立的 VMO 類似,但部分作業不受支援且可能發生錯誤,並可能會發生錯誤。舉例來說,系統不支援調整大小和建立子項 VMO。系統支援透過 zx_vmo_read()/zx_vmo_write() 進行對應、取消對應和讀取/寫入。

一次只能將一個受限狀態的 VMO 繫結至一個執行緒。如果嘗試繫結另一個 VM,將會取代已繫結的 VMO。

只有在最後一個使用者處理常式關閉、移除最後的使用者對應時,繫結的 VMO 才會刪除,且發生下列其中一項情況:

如同任何其他 VMO,對應 VMO 後會由對應保留,因此呼叫端可關閉控點,並直接透過對應存取記憶體。

進入 VMO 偏移 0 時進入受限模式 zx_restricted_state_t 時,系統會載入 VMO 並繼續執行作業。退出受限模式後,執行緒的受限制狀態會在 VMO 的位移 0 時儲存。

options 必須為零。

權限

呼叫端的工作政策必須允許 ZX_POL_NEW_VMO

錯誤

ZX_ERR_INVALID_ARGS out_vmo 是無效指標或 NULL,或者 options 是 0 以外的任何值。

ZX_ERR_NO_MEMORY 因記憶體不足而失敗。使用者空間無法以任何方式處理這個錯誤 (極可能) 錯誤。日後的建構作業不會再發生這個錯誤。

另請參閱