Soft reboot the system with a new kernel and bootimage.
#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() accepts two vmo handles: kernel_vmo should contain a kernel image and bootimage_vmo should contain an initrd whose address shall be passed to the new kernel as a kernel argument.
To supplant the running kernel, a resource of ZX_RSRC_KIND_ROOT must be supplied.
zx_system_mexec() shall supplant the currently running kernel image with the kernel image contained within kernel_vmo, load the ramdisk contained within bootimage_vmo to a location in physical memory and branch directly into the new kernel while providing the address of the loaded initrd to the new kernel.
To use the
zx_system_mexec() function, you must specify
kernel.enable-debugging-syscalls=true on the kernel command line. Otherwise, the function returns ZX_ERR_NOT_SUPPORTED.
resource must have resource kind ZX_RSRC_KIND_ROOT.
kernel_vmo must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_READ.
bootimage_vmo must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_READ.
zx_system_mexec() shall not return upon success.
kernel.enable-debugging-syscalls is not set to
true on the kernel command line.