cpu_sgx_t(3) Library Functions Manual cpu_sgx_t(3) NAME cpu_sgx_t - This contains information about SGX features of the processor Example usage: SYNOPSIS #include Data Fields uint32_t present uint8_t max_enclave_32bit uint8_t max_enclave_64bit uint8_t flags [SGX_FLAGS_MAX] int num_epc_sections uint32_t misc_select uint64_t secs_attributes uint64_t secs_xfrm Detailed Description This contains information about SGX features of the processor Example usage: ... struct cpu_raw_data_t raw; struct cpu_id_t id; if (cpuid_get_raw_data(&raw) == 0 && cpu_identify(&raw, &id) == 0 && id.sgx.present) { printf("SGX is present.\n"); printf("SGX1 instructions: %s.\n", id.sgx.flags[INTEL_SGX1] ? "present" : "absent"); printf("SGX2 instructions: %s.\n", id.sgx.flags[INTEL_SGX2] ? "present" : "absent"); printf("Max 32-bit enclave size: 2^%d bytes.\n", id.sgx.max_enclave_32bit); printf("Max 64-bit enclave size: 2^%d bytes.\n", id.sgx.max_enclave_64bit); for (int i = 0; i < id.sgx.num_epc_sections; i++) { struct cpu_epc_t epc = cpuid_get_epc(i, NULL); printf("EPC section #%d: address = %x, size = %d bytes.\n", epc.address, epc.size); } } else { printf("SGX is not present.\n"); } Field Documentation uint8_t cpu_sgx_t::flags[SGX_FLAGS_MAX] contains SGX feature flags. See the INTEL_SGX* macros below. uint8_t cpu_sgx_t::max_enclave_32bit Max enclave size in 32-bit mode. This is a power-of-two value: if it is '31', then the max enclave size is 2^31 bytes (2 GiB). uint8_t cpu_sgx_t::max_enclave_64bit Max enclave size in 64-bit mode. This is a power-of-two value: if it is '36', then the max enclave size is 2^36 bytes (64 GiB). uint32_t cpu_sgx_t::misc_select bit vector of the supported extended features that can be written to the MISC region of the SSA (Save State Area) int cpu_sgx_t::num_epc_sections number of Enclave Page Cache (EPC) sections. Info for each section is available through the cpuid_get_epc() function uint32_t cpu_sgx_t::present Whether SGX is present (boolean) uint64_t cpu_sgx_t::secs_attributes a bit vector of the attributes that can be set to SECS.ATTRIBUTES via ECREATE. Corresponds to bits 0-63 (incl.) of SECS.ATTRIBUTES. uint64_t cpu_sgx_t::secs_xfrm a bit vector of the bits that can be set in the XSAVE feature request mask; Corresponds to bits 64-127 of SECS.ATTRIBUTES. Author Generated automatically by Doxygen for libcpuid from the source code. libcpuid cpu_sgx_t(3)