摘要
为 VMO 添加执行权限。
声明
#include <zircon/syscalls.h>
zx_status_t zx_vmo_replace_as_executable(zx_handle_t handle,
zx_handle_t vmex,
zx_handle_t* out);
说明
zx_vmo_replace_as_executable()
会替换 handle,并引用同一底层虚拟内存对象 (VMO),并添加正确的 ZX_RIGHT_EXECUTE
。
handle 始终无效。
权限
handle 的类型必须为 ZX_OBJ_TYPE_VMO
。
vmex 的资源种类必须为 ZX_RSRC_KIND_SYSTEM
,且基本为 ZX_RSRC_SYSTEM_VMEX_BASE
。
返回值
zx_vmo_replace_as_executable()
会在成功时返回 ZX_OK
。如果失败,则返回负的错误值。
错误
ZX_ERR_BAD_HANDLE
handle 不是有效的虚拟机对象句柄,或者 vmex 不是具有基本 ZX_RSRC_SYSTEM_VMEX_BASE
的有效 ZX_RSRC_KIND_SYSTEM
资源句柄。
ZX_ERR_NO_MEMORY
由于内存不足而失败。
用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。