cpu_sgx_t(3) Library Functions Manual cpu_sgx_t(3)

cpu_sgx_t - This contains information about SGX features of the processor Example usage:

#include <libcpuid.h>


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

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");
}

contains SGX feature flags. See the INTEL_SGX* macros below.

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).

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).

bit vector of the supported extended features that can be written to the MISC region of the SSA (Save State Area)

number of Enclave Page Cache (EPC) sections. Info for each section is available through the cpuid_get_epc() function

Whether SGX is present (boolean)

a bit vector of the attributes that can be set to SECS.ATTRIBUTES via ECREATE. Corresponds to bits 0-63 (incl.) of SECS.ATTRIBUTES.

a bit vector of the bits that can be set in the XSAVE feature request mask; Corresponds to bits 64-127 of SECS.ATTRIBUTES.

Generated automatically by Doxygen for libcpuid from the source code.

libcpuid