[][src]Function sgx_tstd::rsgx_cpuidex

pub fn rsgx_cpuidex(leaf: i32, subleaf: i32) -> Result<[i32; 4], sgx_status_t>

The rsgx_cpuidex function performs the equivalent of a cpuid_ex() function call or intrinisic which executes the CPUID instruction to query the host processor for the information about supported features.


This function performs an OCALL to execute the CPUID instruction.


This function provides the equivalent of the cpuid_ex() 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_cpuidex 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.


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.



The leaf specified for retrieved CPU info.


The sub-leaf specified for retrieved CPU info.


Library: libsgx_tstdc.a

Return value

The information returned in an array of four integers.



Indicates the parameter is invalid.