nvme_identify_iocs(2)

πŸ’– NAME πŸ’–

nvme_identify_iocs β€” the I/O command set data structure, bestie. it's the whole vibe of "which io command sets does this controller even support" ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

int nvme_identify_iocs (int fd , __u16 cntlid , struct nvme_id_iocs *iocs );

πŸŽ€ ARGUMENTS πŸŽ€

  • fd β€” the file descriptor of your nvme device, like the lil handshake to get in πŸ’…
  • cntlid β€” the controller ID, it's giving "which controller are we even talking to"
  • iocs β€” the user space destination address where the data gets transferred. that's where the tea lands πŸ«–

✨ DESCRIPTION ✨

Okay so literally what this does: it retrieves the list of the controller's supported io command set vectors. no cap, that's the whole thing. check out struct nvme_id_iocs for the deets πŸ’–


🌈 RETURN 🌈

It hands you back the nvme command status if a response was received (peep enum nvme_status_field for that, iykyk), or β€” and listen β€” -1 with errno set otherwise. classic. πŸ™ˆ


and that's the whole page, periodt πŸ’…

this lil writeup lives in the libnvme API manual (yes, the nvme_identify_iocs corner of it), dropped July 2026 πŸ—“οΈβœ¨ β€” nvme_identify_iocs(2), slay πŸ‘‘

πŸ“¦ where this page comes from