摘要
取消對應記憶體、關閉控點、結束。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_vmar_unmap_handle_close_thread_exit(zx_handle_t vmar_handle,
zx_vaddr_t addr,
size_t size,
zx_handle_t close_handle);
說明
zx_vmar_unmap_handle_close_thread_exit()
會執行以下三項作業:
zx_vmar_unmap(vmar_handle, addr, size)
zx_handle_close(close_handle)
zx_thread_exit()
系統會預期第一個作業會解除對應一個區域,其中包含
呼叫執行緒本身的堆疊(並非必要,但系統允許)。這個
有效,但對於 zx_vmar_unmap()
或
做為任何其他呼叫。
如果 zx_vmar_unmap()
作業成功,這個呼叫就不會傳回。
如果 close_handle 是無效帳號代碼,因此 zx_handle_close()
作業
如果失敗,執行緒就會進行陷阱 (就像使用 __builtin_trap();
)。
權限
TODO(https://fxbug.dev/42107318)
傳回值
zx_vmar_unmap_handle_close_thread_exit()
不會傳回成功。
錯誤
與 zx_vmar_unmap()
相同。
附註
預期用途是讓即將消失的執行緒取消對應自己的堆疊。 關閉自己的執行緒控點,然後結束。無法關閉執行緒帳號代碼 因為關閉執行緒的最後一個控制代碼後,就會終止該執行緒。 執行緒必須含有 對發出其最終系統呼叫的堆疊空間
這個呼叫用於卸離的執行緒,
zx_futex_wake_handle_close_thread_exit()
敬上
用於可彙整的執行緒。