zx_vmar_unmap_handle_close_thread_exit

摘要

取消對應記憶體、關閉控點、結束。

宣告

#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() 會執行以下三項作業:

  1. zx_vmar_unmap(vmar_handle, addr, size)
  2. zx_handle_close(close_handle)
  3. 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()敬上 用於可彙整的執行緒。

另請參閱