cpu_sgx_t(3)

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

SYNOPSIS

#include <libcpuid.h>

  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.