摘要
從使用者空間執行安全監控通話 (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_id。func_id 會通知 Secure Monitor 服務和功能
標準屬性client_id 是選用欄位,用途是讓安全軟體追蹤並
建立索引的用戶端 OSsecure_os_id 是選用欄位,適用於
是 S-EL1 中的多個安全作業系統,因此呼叫端可以指定預期中的
安全 OS
詳情請參閱 ARM SMC 通話會議說明文件。
權限
TODO(https://fxbug.dev/42107318)
傳回值
如果帳號代碼具備足夠的權限,zx_smc_call()
會傳回 ZX_OK
。
smc 呼叫的回傳值會在成功時透過 out_smc_result
傳回。如果發生以下情況:
失敗時,會傳回負的錯誤值。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
帳號代碼不是資源控制代碼。
ZX_ERR_ACCESS_DENIED
帳號代碼沒有足夠的權限。
這個系統不支援 ZX_ERR_NOT_SUPPORTED
smc_call。
ZX_ERR_INVALID_ARGS
parameters 或 out_smc_result,都是空值指標