摘要
從使用者空間進行安全監控呼叫 (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_id。func_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 為空值指標