zx_system_mexec

摘要

使用新的核心和開機映像檔軟性重新啟動系統。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_system_mexec(zx_handle_t resource,
                            zx_handle_t kernel_vmo,
                            zx_handle_t bootimage_vmo);

說明

zx_system_mexec() 可接受兩個 vmo 控制代碼:kernel_vmo 應包含核心映像檔,而 bootimage_vmo 應包含一個 init。其位址應以其位址做為核心引數傳遞至新核心。

如要取代執行中的核心,必須提供 ZX_RSRC_KIND_SYSTEM資源 (搭配基礎 ZX_RSRC_SYSTEM_MEXEC_BASE)。

成功後,zx_system_mexec() 應使用 kernel_vmo 中包含的核心映像檔取代目前執行中的核心映像檔,將 bootimage_vmo 內部的 ramdisk 直接載入實體記憶體中的位置,並將已載入 init 的位址提供給新核心。

如要使用 zx_system_mexec() 函式,您必須在核心指令列中指定 kernel.enable-debugging-syscalls=true。否則,函式會傳回 ZX_ERR_NOT_SUPPORTED

權限

resource 的資源類型 ZX_RSRC_KIND_SYSTEM 必須搭配基礎 ZX_RSRC_SYSTEM_MEXEC_BASE

kernel_vmo 必須是 ZX_OBJ_TYPE_VMO 類型,且具有 ZX_RIGHT_READ

bootimage_vmo 必須是 ZX_OBJ_TYPE_VMO 類型,且具有 ZX_RIGHT_READ

傳回值

成功後,zx_system_mexec() 不會傳回。

核心指令列中的 ZX_ERR_NOT_SUPPORTED kernel.enable-debugging-syscalls 未設為 true

另請參閱