zx_vmar_map_clock

摘要

對應核心時鐘物件的狀態。

宣告

zx_status_t zx_vmar_map_clock(zx_handle_t handle,
                              zx_vm_option_t options,
                              uint64_t vmar_offset,
                              zx_handle_t clock_handle,
                              uint64_t len,
                              user_out_ptr<zx_vaddr_t> mapped_addr);

說明

將指定時鐘的狀態對應至指定的虛擬記憶體位址區域。對應會保留對基礎虛擬記憶體物件的參照,這表示關閉時鐘句柄不會移除此函式新增的對應項目。指定的 options呼叫 zx_vmar_map() 時使用的相同,但下列選項明確禁止使用,且一律會導致錯誤:

  • ZX_VM_PERM_WRITE
  • ZX_VM_PERM_EXECUTE
  • ZX_VM_PERM_READ_IF_XOM_UNSUPPORTED

此外,系統不會提供 vmo_offet,且傳遞的長度必須是使用 zx_object_get_info()ZX_INFO_CLOCK_MAPPED_SIZE 主題執行的計時器物件所回報的長度。不允許部分對應時鐘狀態。

無論使用者傳遞的選項為何,使用此系統呼叫建立的對應項目一律無法調整大小。

除了具備建立對應項目的 VMAR 權限外,clock_handle 也必須具備 ZX_RIGHT_READZX_RIGHT_MAP 權限。

取消對時鐘的對應方式與 VMO 相同,即將原始對應的位址和長度傳遞至對 zx_vmar_unmap() 的呼叫。

使用者可能會在對時鐘進行對應後關閉時鐘的句柄,但仍可讀取時鐘的狀態。關閉時鐘句柄不會破壞對應,只有對 zx_vmar_unmap() 的正確建構呼叫才能做到這點。

權限

handle 必須是 ZX_OBJ_TYPE_VMAR 類型。

clock_handle 必須為 ZX_OBJ_TYPE_CLOCK 類型。

傳回值

zx_vmar_map_clock() 會在成功時傳回 ZX_OK 和對應的絕對基底位址 (透過 mapped_addr)。基本位址會與頁面對齊,且不為零。如果失敗,系統會傳回負值錯誤值。

錯誤

ZX_ERR_BAD_HANDLE handleclock_handle 不是有效的 handle。

ZX_ERR_WRONG_TYPE handleclock_handle 分別不是 VMAR 或 Clock 句柄。

ZX_ERR_BAD_STATE handle 是指已銷毀的 VMAR。

ZX_ERR_INVALID_ARGS 的下列任一情況: - lenZX_INFO_CLOCK_MAPPED_SIZE 回報的對應大小不符。- options 包含上述明確禁止的標記。

如要瞭解這兩個系統呼叫的其他可能常見錯誤,請參閱zx_vmar_map() 可能傳回的錯誤

附註

使用 ZX_INFO_VMAR_MAPSZX_INFO_PROCESS_MAPS 主題,搭配 zx_object_get_info() 系統呼叫的對應項目,會包含與對應 VMO 相同的資訊,但以下例外:

  • 字串「kernel-clock」會傳回做為對應項目的名稱
  • 對應關係的 KOID,會回報為時鐘物件的 KOID。

另請參閱