libnvme(9)
π 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
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms