libnvme(2)

πŸ’– libnvme β€” struct nvme_lm_io_completion_queue_data πŸ’–

okay bestie, sit down, hydrate, and let me tell you about this little struct from the libnvme API manual (that's section 2 of the manual, the one for library calls, iykyk). this one is genuinely niche and I'm obsessed with it.


✨ NAME ✨

struct nvme_lm_io_completion_queue_data β€” I/O Completion Queue data structure. 🌸

she holds the fields related to the contents of the Create I/O Completion Queue command that created an I/O Completion Queue. so basically she's the receipts 🧾 for a completion queue that already exists. not the command itself, just the tea about what it made. periodt.


πŸ¦‹ SYNOPSIS πŸ¦‹

struct nvme_lm_io_completion_queue_data {
    __le64 iocqprp1;
    __le16 iocqqsize;
    __le16 iocqqid;
    __le16 iocqhp;
    __le16 iocqtp;
    __le32 iocqa;
    __u8 rsvd20[4];
 };

look at her. so compact. so neat. lowkey a work of art. πŸ’…


πŸ‘‘ Members πŸ‘‘

okay now the main character energy part β€” every single field, no skips, fr fr:

  • iocqprp1 β€” I/O Completion Queue PRP Entry 1 (that's IOCQPRP1, the fancy acronym, keep it in your notes bestie). πŸ’–
  • iocqqsize β€” I/O Completion Queue Size, aka IOCQQSIZE. how big the queue is, no cap.
  • iocqqid β€” I/O Completion Queue Identifier</... wait, no, gotta close it properly: I/O Completion Queue Identifier (IOCQQID). it's her name tag. πŸŽ€
  • iocqhp β€” I/O Completion Queue Head Pointer (IOCQHP). the head pointer is doing head pointer things. iconic behaviour.
  • iocqtp β€” I/O Completion Queue Tail Pointer (IOCQTP). yes, she's the tail to that head. they're a package deal. 🫢
  • iocqa β€” I/O Completion Queue Attributes (IOCQA). the ~vibes~ field. the personality, if you will.
  • rsvd20 β€” Reserved. πŸ™ˆ do not touch. do not write to it. do not look at it too long. reserved means reserved, bestie, that's a boundary and we respect boundaries. πŸ’€

πŸ’€ a gentle reminder: rsvd20 is Reserved. it is not a secret bonus field for you to store your little gremlin data in. hands off. βœ‹

okay that's the whole struct!! every field accounted for, nothing dropped, we ate and left no crumbs πŸ“βœ¨

July 2026 β€” that's the date on this page, and it lives in the libnvme(2) API manual, so if you're reading this you're officially in section 2 territory. mwah, love that for us. πŸŽ€πŸ’œ bye bestie, go make a completion queue or something 🌈

πŸ“¦ where this page comes from