STRUCT TEE_IOCTL_VERSION_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

struct tee_ioctl_version_data β€” literally the TEE version, bestie, that's the whole vibe ✨

so this is a page from the Kernel API Manual, and it's all about introducing you to

struct tee_ioctl_version_data

which is the little struct that tells you what TEE you're talking to 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

okay so here's the shape of it, no cap, copy it exactly:

struct tee_ioctl_version_data {
    __u32 impl_id;
    __u32 impl_caps;
    __u32 gen_caps;
 };

three __u32 fields, that's it, that's the whole queen πŸ‘‘


🌸 MEMBERS 🌸

every field has main character energy and every single one is an [out] (so the kernel is handing you the tea, you're not giving it anything back):

  • impl_id β€” [out] the TEE implementation id πŸ’… like, which TEE is this
  • impl_caps β€” [out] the capabilities that are specific to that particular implementation ✨
  • gen_caps β€” [out] the generic capabilities, and these ones are defined by TEE_GEN_CAPS_* above πŸ‘‘ (iykyk, go look up above)

πŸŽ€ DESCRIPTION πŸŽ€

so what does this struct actually do? it identifies the TEE implementation, periodt. πŸ’–

impl_id is one of the TEE_IMPL_ID_* values from above β€” that's the field that tells you which implementation you're dealing with 🌈

and impl_caps? that one is implementation specific, fr fr. the example they give is that TEE_OPTEE_CAP_* is valid when impl_id == TEE_IMPL_ID_OPTEE 🧚 so like, the caps only make sense once you know which implementation you've got. vibe check passed βœ…

ok but genuinely β€” don't read impl_caps before you've checked impl_id, that's the whole point of the example bestie 😭

πŸ¦‹ SEE ALSO πŸ¦‹

the whole friend group, gathered for you πŸ’œ:


and that's the page!! 🫢 this one lives over in ./include/uapi/linux and it's stamped October 2026 β€” yes, the future, she's ahead of her time ⭐ go read the source bestie, mwah πŸ’‹πŸŽ€

πŸ“¦ where this page comes from