zx_smc_call

摘要

从用户空间进行安全监控调用 (SMC)。

声明

#include <zircon/syscalls.h>
#include <zircon/syscalls/smc.h>

zx_status_t zx_smc_call(zx_handle_t handle,
                        const zx_smc_parameters_t* parameters,
                        zx_smc_result_t* out_smc_result);

说明

zx_smc_call() 从用户空间进行安全监控调用 (SMC)。它支持 ARM SMC 调用 使用 zx_smc_parameters_t 输入参数和 zx_smc_result_t 输出参数的约定。 输入 handle 必须是具有足够权限的资源对象才能执行。

zx_smc_call() 的角度来看,大多数参数是不透明的,因为它们是 取决于 func_idfunc_id 向安全监控器告知服务和函数 调用该方法。client_id 是一个可选字段,旨在供安全软件跟踪和 将调用客户端操作系统编入索引。secure_os_id 是一个可选字段, 是 S-EL1 的多个安全操作系统,因此调用方可以指定想要的 安全操作系统。

如需了解详情,请参阅 ARM SMC 调用约定文档

权限

TODO(https://fxbug.dev/42107318)

返回值

如果 handle 具有足够的权限,则 zx_smc_call() 会返回 ZX_OK。通过 成功时通过 out_smc_result 返回 smc 调用的返回值。如果出现 失败,则返回负的错误值。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

ZX_ERR_WRONG_TYPE handle 不是资源句柄。

ZX_ERR_ACCESS_DENIED handle 没有足够的权限。

此系统不支持 ZX_ERR_NOT_SUPPORTED smc_call。

ZX_ERR_INVALID_ARGS parametersout_smc_result 为 null 指针