libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ’– libnvme(9) β€” the enum nvme_cmic page πŸ’–

okay so bestie, you're in the libnvme API manual and this page is specifically about enum nvme_cmic β€” it's giving "controller multi-path I/O and NS sharing capabilities" energy. lowkey one of those fields that does a lot of heavy lifting behind the scenes. ✨

It's a C enum, so it's just a tidy little pile of named constants β€” some of them are shift amounts (how far you slide the bits over, iykyk) and some are masks (which bits you keep when the dust settles). Two flavours, same five features. iconic. πŸŽ€


🌸 SYNOPSIS 🌸

Here's the whole squad, exactly as declared:

enum nvme_cmic {
    NVME_CMIC_MULTI_PORT_SHIFT ,
    NVME_CMIC_MULTI_CTRL_SHIFT ,
    NVME_CMIC_MULTI_SRIOV_SHIFT ,
    NVME_CMIC_MULTI_ANA_SHIFT ,
    NVME_CMIC_MULTI_RSVD_SHIFT ,
    NVME_CMIC_MULTI_PORT_MASK ,
    NVME_CMIC_MULTI_CTRL_MASK ,
    NVME_CMIC_MULTI_SRIOV_MASK ,
    NVME_CMIC_MULTI_ANA_MASK ,
    NVME_CMIC_MULTI_RSVD_MASK

};
side note bestie: in the original page there's a blank line right before the closing }; β€” not me pointing that out πŸ’€ it's literally just how the source looks. not a typo, just vibes.

πŸ¦‹ Constants πŸ¦‹

✨ the SHIFT constants (slide to the left, slide to the right) ✨

  • NVME_CMIC_MULTI_PORT_SHIFT β€” the shift amount you use to get the NVM subsystem port. 🫢
  • NVME_CMIC_MULTI_CTRL_SHIFT β€” the shift amount you use to get the controllers.
  • NVME_CMIC_MULTI_SRIOV_SHIFT β€” the shift amount you use to get the SR-IOV virtual function.
  • NVME_CMIC_MULTI_ANA_SHIFT β€” the shift amount you use to get the asymmetric namespace access reporting. say that three times fast, I dare you 😭
  • NVME_CMIC_MULTI_RSVD_SHIFT β€” the shift amount you use to get the reserved. yes, reserved. that's the whole description. she's mysterious, she's lowkey, she's reserved πŸ’…

πŸ’… the MASK constants (keep what matters, hide the rest) πŸ’…

  • NVME_CMIC_MULTI_PORT_MASK β€” the mask that gets you the NVM subsystem port.
  • NVME_CMIC_MULTI_CTRL_MASK β€” the mask that gets you the controllers.
  • NVME_CMIC_MULTI_SRIOV_MASK β€” the mask that gets you the SR-IOV virtual function.
  • NVME_CMIC_MULTI_ANA_MASK β€” the mask that gets you the asymmetric namespace access reporting.
  • NVME_CMIC_MULTI_RSVD_MASK β€” the mask that gets you the reserved. reservedΒ². the reserved-iest. no notes. πŸ‘‘

so yeah β€” five features, each with a shift constant and a mask constant, ten constants total, all living happily inside one enum. the way that this is genuinely all you need to know 🧚

fr fr reminder: shifts are for moving bits, masks are for reading them. the page doesn't spell out the arithmetic, so I'm not gonna invent any for you β€” what you see above is what the manpage gives you, character for character. πŸ’œ

and that's the whole page, bestie! this edition of the libnvme API manual was dated October 2026, the page is enum nvme_cmic, and it ships as part of libnvme(9). go forth and mask responsibly πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from