Function sgx_tstd::rsgx_cpuid [−][src]
pub fn rsgx_cpuid(leaf: i32) -> SgxResult<sgx_cpuinfo_t>
The rsgx_cpuid function performs the equivalent of a cpuid() function call or intrinisic which executes the CPUID instruction to query the host processor for the information about supported features.
Note
This function performs an OCALL to execute the CPUID instruction.
Description
This function provides the equivalent of the cpuid() function or intrinsic. The function executes the CPUID instruction for the given leaf (input). The CPUID instruction provides processor feature and type information that is returned in cpuinfo, an array of 4 integers to specify the values of EAX, EBX, ECX and EDX registers. rsgx_cpuid performs an OCALL by invoking oc_cpuidex to get the info from untrusted side because the CPUID instruction is an illegal instruction in the enclave domain.
Note
As the CPUID instruction is executed by an OCALL, the results should not be trusted. Code should verify the results and perform a threat evaluation to determine the impact on trusted code if the results were spoofed.
The implementation of this function performs an OCALL and therefore, this function will not have the same serializing or fencing behavior of executing a CPUID instruction in an untrusted domain code flow.
Parameters
leaf
The leaf specified for retrieved CPU info.
Requirements
Library: libsgx_tstdc.a
Return value
The information returned in an array of four integers.
Errors
SGX_ERROR_INVALID_PARAMETER
Indicates the parameter is invalid.