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 应包含一个 initrd,其地址 作为内核参数传递给新内核。

为了取代正在运行的内核,资源为 ZX_RSRC_KIND_SYSTEM 和基本资源 必须提供 ZX_RSRC_SYSTEM_MEXEC_BASE

成功后,zx_system_mexec() 应取代当前运行的内核 包含 kernel_vmo 中包含的内核映像的映像,请加载 ramdisk 包含在 bootimage_vmo 中,并粘贴到物理内存和分支中的某个位置 直接复制到新内核中,同时提供已加载的 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

另请参阅