STRUCT NE_ENCLAVE_START_INFO(9)
β¨ NAME β¨
struct ne_enclave_start_info β the little setup-info struct you need for enclave start, and it's in / out bestie, meaning it's both an input AND an output, she's versatile π
okay so real talk, this page lives in the Kernel API Manual, section 9, and it's about one tiny struct that carries the tea the hypervisor needs before your enclave can ~start~ β¨
π¦ SYNOPSIS π¦
struct ne_enclave_start_info {
__u64 flags;
__u64 enclave_cid;
};
that's it. two fields. lowkey iconic for how much she does with so little π
πΈ Members πΈ
flagsβ the flags your enclave starts with (think debug mode and friends) β this one is (in) only, so you're the one filling it out π«Άenclave_cidβ the Context ID (CID) for the enclave's vsock device. and here's the cute part: if you pass in0as input, the CID gets autogenerated by the hypervisor and handed right back to you as output by the driver. she's (in / out) β you give her something, she maybe gives you something better β¨
btw the whole struct is described as (in / out) up in the NAME section, so don't let the input-only flags field confuse you β the struct as a whole does the round trip π
π SEE ALSO π
the whole friend group, fr fr β go read these next:
./include/uapi/linux/nitro_enclaves.hNitro Enclaves (NE) Kernel Driver Interface(9)NE_CREATE_VM(9)NE_ADD_VCPU(9)NE_GET_IMAGE_LOAD_INFO(9)NE_SET_USER_MEMORY_REGION(9)NE_START_ENCLAVE(9)NE specific error codes(9)NE_ERR_VCPU_ALREADY_USED(9)NE_ERR_VCPU_NOT_IN_CPU_POOL(9)NE_ERR_VCPU_INVALID_CPU_CORE(9)NE_ERR_INVALID_MEM_REGION_SIZE(9)NE_ERR_INVALID_MEM_REGION_ADDR(9)NE_ERR_UNALIGNED_MEM_REGION_ADDR(9)NE_ERR_MEM_REGION_ALREADY_USED(9)NE_ERR_MEM_NOT_HUGE_PAGE(9)NE_ERR_MEM_DIFFERENT_NUMA_NODE(9)NE_ERR_MEM_MAX_REGIONS(9)NE_ERR_NO_MEM_REGIONS_ADDED(9)NE_ERR_NO_VCPUS_ADDED(9)NE_ERR_ENCLAVE_MEM_MIN_SIZE(9)NE_ERR_FULL_CORES_NOT_USED(9)NE_ERR_NOT_IN_INIT_STATE(9)NE_ERR_INVALID_VCPU(9)NE_ERR_NO_CPUS_AVAIL_IN_POOL(9)NE_ERR_INVALID_PAGE_SIZE(9)NE_ERR_INVALID_FLAG_VALUE(9)NE_ERR_INVALID_ENCLAVE_CID(9)Image load info flags(9)NE_EIF_IMAGE(9)struct ne_image_load_info(9)User memory region flags(9)NE_DEFAULT_MEMORY_REGION(9)struct ne_user_memory_region(9)Enclave start info flags(9)NE_ENCLAVE_PRODUCTION_MODE(9)NE_ENCLAVE_DEBUG_MODE(9)
and that's the whole page, bestie π§ no cap, every field and every cross-reference accounted for. this one was sourced from ./include/uapi/linux and dated October 2026 β go off, you're basically a kernel dev now ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms