libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸŽ€ libnvme(9) πŸŽ€

okay so this is straight out of the API Manual, and bestie, it's literally the whole page about enum nvme_cc β€” the enum that tells you all about the controller configuration πŸ’… no cap, that's what the NAME says, and I'm not gonna lie about it.


🌸 NAME 🌸

enum nvme_cc β€” this field indicates the controller configuration. periodt.


✨ SYNOPSIS ✨

here's the whole enum, copied exactly, every single member, don't skip a one:

enum nvme_cc {
    NVME_CC_EN_SHIFT ,
    NVME_CC_CSS_SHIFT ,
    NVME_CC_MPS_SHIFT ,
    NVME_CC_AMS_SHIFT ,
    NVME_CC_SHN_SHIFT ,
    NVME_CC_IOSQES_SHIFT ,
    NVME_CC_IOCQES_SHIFT ,
    NVME_CC_CRIME_SHIFT ,
    NVME_CC_EN_MASK ,
    NVME_CC_CSS_MASK ,
    NVME_CC_MPS_MASK ,
    NVME_CC_AMS_MASK ,
    NVME_CC_SHN_MASK ,
    NVME_CC_CRIME_MASK ,
    NVME_CC_IOSQES_MASK ,
    NVME_CC_IOCQES_MASK ,
    NVME_CC_CSS_NVM ,
    NVME_CC_CSS_CSI ,
    NVME_CC_CSS_ADMIN ,
    NVME_CC_AMS_RR ,
    NVME_CC_AMS_WRRU ,
    NVME_CC_AMS_VS ,
    NVME_CC_SHN_NONE ,
    NVME_CC_SHN_NORMAL ,
    NVME_CC_SHN_ABRUPT ,
    NVME_CC_CRWME ,
    NVME_CC_CRIME

};

πŸ‘‘ Constants πŸ‘‘

this is the part where every single one gets its lil moment. and yes, I'm giving you the descriptions exactly as the manual hands them over β€” I'm a good archivist, not a chaos gremlin πŸ™ˆ

πŸ¦‹ the shift amounts

  • NVME_CC_EN_SHIFT β€” shift amount to get the enable ✨
  • NVME_CC_CSS_SHIFT β€” shift amount to get the I/O command set selected
  • NVME_CC_MPS_SHIFT β€” shift amount to get the memory page size
  • NVME_CC_AMS_SHIFT β€” shift amount to get the arbitration mechanism selected
  • NVME_CC_SHN_SHIFT β€” shift amount to get the shutdown notification
  • NVME_CC_IOSQES_SHIFT β€” shift amount to get the I/O submission queue entry size
  • NVME_CC_IOCQES_SHIFT β€” shift amount to get the I/O completion queue entry size
  • NVME_CC_CRIME_SHIFT β€” shift amount to get the controller ready independent of media enable

πŸ’… the masks

  • NVME_CC_EN_MASK β€” mask to get the enable
  • NVME_CC_CSS_MASK β€” mask to get the I/O command set selected
  • NVME_CC_MPS_MASK β€” mask to get the memory page size
  • NVME_CC_AMS_MASK β€” mask to get the arbitration mechanism selected
  • NVME_CC_SHN_MASK β€” mask to get the shutdown notification
  • NVME_CC_CRIME_MASK β€” mask to get the I/O submission queue entry size
  • NVME_CC_IOSQES_MASK β€” mask to get the I/O completion queue entry size
  • NVME_CC_IOCQES_MASK β€” mask to get the controller ready independent of media enable
bestie I am reading these straight off the page, character for character, no editing, no "fixing" β€” you want the manual, you get the manual, exactly as printed πŸ”₯

🧚 the command sets

  • NVME_CC_CSS_NVM β€” NVM command set
  • NVME_CC_CSS_CSI β€” all supported I/O command sets
  • NVME_CC_CSS_ADMIN β€” admin command set only

🌈 the arbitration mechanisms

  • NVME_CC_AMS_RR β€” round robin
  • NVME_CC_AMS_WRRU β€” weighted round robin with urgent priority class
  • NVME_CC_AMS_VS β€” vendor specific

⭐ the shutdown notifications

  • NVME_CC_SHN_NONE β€” no notification; no effect
  • NVME_CC_SHN_NORMAL β€” normal shutdown notification
  • NVME_CC_SHN_ABRUPT β€” abrupt shutdown notification

πŸ’– the controller-ready ones

  • NVME_CC_CRWME β€” controller ready with media enable
  • NVME_CC_CRIME β€” controller ready independent of media enable

and that's literally the whole vibe, bestie β€” 27 members, all accounted for, nothing dropped 🫢

signing off with the receipts: this was October 2026, the page is all about enum nvme_cc, and it lives in libnvme(9). go configure a controller, you icon πŸ‘‘πŸ’œ

πŸ“¦ where this page comes from