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)。此 API 透過 zx_smc_parameters_t 輸入參數和 zx_smc_result_t 輸出參數支援 ARM SMC 呼叫慣例。輸入處理常式必須是具備足夠權限的資源物件,系統才能執行。

zx_smc_call() 的角度來看,大多數的參數都是不透明,因為它們依附於 func_idfunc_id 會通知安全監控要叫用的服務和函式。client_id 是選填欄位,用於讓安全軟體追蹤呼叫用戶端 OS 並建立索引。secure_os_id 是選用欄位,適用於 S-EL1 有多個安全作業系統的情況,以便呼叫端指定預期的安全 OS。

詳情請參閱 ARM SMC 通話會議說明文件

權限

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

傳回值

如果「帳號代碼」擁有足夠權限,zx_smc_call() 將傳回 ZX_OK。成功時,系統會透過 out_smc_result 傳回 smc 呼叫的傳回值。失敗時會傳回負值的錯誤值。

錯誤

ZX_ERR_BAD_HANDLE」的帳號代碼並非有效的帳號代碼。

ZX_ERR_WRONG_TYPE 帳號代碼並非資源控制代碼。

ZX_ERR_ACCESS_DENIED 帳號代碼的權限不足。

這個系統不支援 ZX_ERR_NOT_SUPPORTED smc_call。

ZX_ERR_INVALID_ARGS 參數out_smc_result 為空值指標