libnvme(2)
π libnvme β it's the enum nvme_id_ctrl_oacs page, bestie π
okay so you found yourself in the libnvme(2) manual and it's giving "controller vibe check" energy, and honestly? obsessed. this whole page is about one enum, and that enum is a little bitmask baddie that tells you which optional Admin commands and features your NVMe controller actually supports β you know, the stuff hanging out in &struct nvme_id_ctrl.oacs. no cap, that's the entire plot. π¦
β¨ NAME β¨
enum nvme_id_ctrl_oacs β Flags indicating the optional Admin commands and features supported by the controller, see &struct nvme_id_ctrl.oacs.
like, it's the receipts for what your controller can and can't do. main character energy for a bitfield, fr fr. π
πΈ SYNOPSIS πΈ
enum nvme_id_ctrl_oacs {
NVME_CTRL_OACS_SSRS_SHIFT ,
NVME_CTRL_OACS_FNVMS_SHIFT ,
NVME_CTRL_OACS_FWDS_SHIFT ,
NVME_CTRL_OACS_NMS_SHIFT ,
NVME_CTRL_OACS_DSTS_SHIFT ,
NVME_CTRL_OACS_DIRS_SHIFT ,
NVME_CTRL_OACS_NSRS_SHIFT ,
NVME_CTRL_OACS_VMS_SHIFT ,
NVME_CTRL_OACS_DBCS_SHIFT ,
NVME_CTRL_OACS_GLSS_SHIFT ,
NVME_CTRL_OACS_CFLS_SHIFT ,
NVME_CTRL_OACS_HMLMS_SHIFT ,
NVME_CTRL_OACS_SSRS_MASK ,
NVME_CTRL_OACS_FNVMS_MASK ,
NVME_CTRL_OACS_FWDS_MASK ,
NVME_CTRL_OACS_NMS_MASK ,
NVME_CTRL_OACS_DSTS_MASK ,
NVME_CTRL_OACS_DIRS_MASK ,
NVME_CTRL_OACS_NSRS_MASK ,
NVME_CTRL_OACS_VMS_MASK ,
NVME_CTRL_OACS_DBCS_MASK ,
NVME_CTRL_OACS_GLSS_MASK ,
NVME_CTRL_OACS_CFLS_MASK ,
NVME_CTRL_OACS_HMLMS_MASK ,
NVME_CTRL_OACS_SECURITY ,
NVME_CTRL_OACS_FORMAT ,
NVME_CTRL_OACS_FW ,
NVME_CTRL_OACS_NS_MGMT ,
NVME_CTRL_OACS_SELF_TEST ,
NVME_CTRL_OACS_DIRECTIVES ,
NVME_CTRL_OACS_NVME_MI ,
NVME_CTRL_OACS_VIRT_MGMT ,
NVME_CTRL_OACS_DBBUF_CFG ,
NVME_CTRL_OACS_LBA_STATUS ,
NVME_CTRL_OACS_CMD_FEAT_LD ,
NVME_CTRL_OACS_HMLM
};
π Constants π
bestie, there's three flavours of constant here and they're literally a team: SHIFT ones tell you how far to shift to grab a bit, MASK ones give you the mask to grab it, and the plain-named ones are the actual bits β if set, that thing is supported. periodt. π
π₯ the SHIFT girlies (how many places to slide over) π₯
NVME_CTRL_OACS_SSRS_SHIFTβ Shift amount to get the Security Send Receive supportedNVME_CTRL_OACS_FNVMS_SHIFTβ Shift amount to get the Format NVM supportedNVME_CTRL_OACS_FWDS_SHIFTβ Shift amount to get the Firmware Download supportedNVME_CTRL_OACS_NMS_SHIFTβ Shift amount to get the Namespace Management supportedNVME_CTRL_OACS_DSTS_SHIFTβ Shift amount to get the Device Self-test supportedNVME_CTRL_OACS_DIRS_SHIFTβ Shift amount to get the Directives supportedNVME_CTRL_OACS_NSRS_SHIFTβ Shift amount to get the NVMe-MI Send Receive supportedNVME_CTRL_OACS_VMS_SHIFTβ Shift amount to get the Virtualization Management supportedNVME_CTRL_OACS_DBCS_SHIFTβ Shift amount to get the Doorbell Buffer Config supportedNVME_CTRL_OACS_GLSS_SHIFTβ Shift amount to get the Get LBA Status supportedNVME_CTRL_OACS_CFLS_SHIFTβ Shift amount to get the Command and Feature Lockdown supportedNVME_CTRL_OACS_HMLMS_SHIFTβ Shift amount to get the Host Managed Live Migration support
π¦ the MASK besties (the actual mask value) π¦
NVME_CTRL_OACS_SSRS_MASKβ Mask to get the Security Send Receive supportedNVME_CTRL_OACS_FNVMS_MASKβ Mask to get the Format NVM supportedNVME_CTRL_OACS_FWDS_MASKβ Mask to get the Firmware Download supportedNVME_CTRL_OACS_NMS_MASKβ Mask to get the Namespace Management supportedNVME_CTRL_OACS_DSTS_MASKβ Mask to get the Device Self-test supportedNVME_CTRL_OACS_DIRS_MASKβ Mask to get the Directives supportedNVME_CTRL_OACS_NSRS_MASKβ Mask to get the NVMe-MI Send Receive supportedNVME_CTRL_OACS_VMS_MASKβ Mask to get the Virtualization Management supportedNVME_CTRL_OACS_DBCS_MASKβ Mask to get the Doorbell Buffer Config supportedNVME_CTRL_OACS_GLSS_MASKβ Mask to get the Get LBA Status supportedNVME_CTRL_OACS_CFLS_MASKβ Mask to get the Command and Feature Lockdown supportedNVME_CTRL_OACS_HMLMS_MASKβ Mask to get the Host Managed Live Migration support
π the actual bits (if set, she's supported) π
NVME_CTRL_OACS_SECURITYβ If set, then the controller supports the Security Send and Security Receive commands.NVME_CTRL_OACS_FORMATβ If set then the controller supports the Format NVM command.NVME_CTRL_OACS_FWβ If set, then the controller supports the Firmware Commit and Firmware Image Download commands.NVME_CTRL_OACS_NS_MGMTβ If set, then the controller supports the Namespace Management capabilityNVME_CTRL_OACS_SELF_TESTβ If set, then the controller supports the Device Self-test command.NVME_CTRL_OACS_DIRECTIVESβ If set, then the controller supports Directives and the Directive Send and Directive Receive commands.NVME_CTRL_OACS_NVME_MIβ If set, then the controller supports the NVMe-MI Send and NVMe-MI Receive commands.NVME_CTRL_OACS_VIRT_MGMTβ If set, then the controller supports the Virtualization Management command.NVME_CTRL_OACS_DBBUF_CFGβ If set, then the controller supports the Doorbell Buffer Config command.NVME_CTRL_OACS_LBA_STATUSβ If set, then the controller supports the Get LBA Status capability.NVME_CTRL_OACS_CMD_FEAT_LDβ If set, then the controller supports the command and feature lockdown capability.NVME_CTRL_OACS_HMLMβ If set, then the controller supports the command and Host Managed Live Migration capability.
π reminder bestie: SHIFT gets you the position, MASK gets you the bit, and the plain constant is the value you compare against. don't mix them up, that's a vibe check you will fail. π«Ά
and that's the whole page, babe β no SEE ALSO, no options, just the oacs enum living her best life. this libnvme(2) bop dropped in July 2026 (enum nvme_id_ctrl_oacs, part of the libnvme API manual) and honestly? she ate. β¨π go check &struct nvme_id_ctrl.oacs and slay. ππ
π¦ where this page comes from
- ubuntu stonking: libnvme-dev 1.16.2-1build1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms