总结
返回包含启动此系统所需的 ZBI 条目的 ZBI。
声明
#include <zircon/syscalls.h>
zx_status_t zx_system_mexec_payload_get(zx_handle_t resource,
void* buffer,
size_t buffer_size);
说明
zx_system_mexec_payload_get()
接受资源句柄和与输出缓冲区对应的指针/长度。缓冲区的头部会被不可启动的 ZBI 覆盖,其中包含应在将图像传递给 zx_system_mexec()
之前附加到 ZBI 的一系列条目;缓冲区的尾部保持不变。
resource 必须是具有基 ZX_RSRC_SYSTEM_MEXEC_BASE
的 ZX_RSRC_KIND_SYSTEM
类型。
buffer 和 buffer_size 必须指向一个不超过 16KiB 的缓冲区。
如需使用 zx_system_mexec_payload_get()
函数,您必须在内核命令行中指定 kernel.enable-debugging-syscalls=true
。否则,该函数会返回 ZX_ERR_NOT_SUPPORTED
。
权限
resource 必须具有基本 ZX_RSRC_SYSTEM_MEXEC_BASE
的资源种类 ZX_RSRC_KIND_SYSTEM
。
返回值
zx_system_mexec_payload_get()
会在成功时返回 ZX_OK
。
内核命令行中的 ZX_ERR_NOT_SUPPORTED
kernel.enable-debugging-syscalls
未设置为 true
。
ZX_ERR_BUFFER_TOO_SMALL
:如果提供的缓冲区对于 ZBI 来说过小。
在这种情况下,调用方应使用更大的缓冲区再次执行系统调用。