libnvme(9)
π libnvme(9) β the API Manual, but make it make sense π
Okay bestie, so this one is a page from the libnvme API manual (that's the libnvme(9) bit, iykyk), and it's all about one little enum. Yes, just an enum. But she's kind of an icon actually, because she's the one telling you which Optional Asynchronous Events Supported your NVMe controller is out here flexing. β¨
Strap in β it's a long list, but every single one of these matters, so we're doing all of them, no skipping, periodt. π
πΈ NAME πΈ
enum nvme_id_ctrl_oaes β Optional Asynchronous Events Supported. That's it, that's the whole vibe: the enum that says which optional async events a controller supports. π¦
β¨ SYNOPSIS β¨
enum nvme_id_ctrl_oaes {
NVME_CTRL_OAES_NSAN_SHIFT ,
NVME_CTRL_OAES_FAN_SHIFT ,
NVME_CTRL_OAES_ANACN_SHIFT ,
NVME_CTRL_OAES_PLEAN_SHIFT ,
NVME_CTRL_OAES_LSIAN_SHIFT ,
NVME_CTRL_OAES_EGEAN_SHIFT ,
NVME_CTRL_OAES_NNSS_SHIFT ,
NVME_CTRL_OAES_TTHR_SHIFT ,
NVME_CTRL_OAES_RGCNS_SHIFT ,
NVME_CTRL_OAES_ANSAN_SHIFT ,
NVME_CTRL_OAES_CCRCN_SHIFT ,
NVME_CTRL_OAES_LHCN_SHIFT ,
NVME_CTRL_OAES_RLCC_SHIFT ,
NVME_CTRL_OAES_ZDCN_SHIFT ,
NVME_CTRL_OAES_DLPCN_SHIFT ,
NVME_CTRL_OAES_NSAN_MASK ,
NVME_CTRL_OAES_FAN_MASK ,
NVME_CTRL_OAES_ANACN_MASK ,
NVME_CTRL_OAES_PLEAN_MASK ,
NVME_CTRL_OAES_LSIAN_MASK ,
NVME_CTRL_OAES_EGEAN_MASK ,
NVME_CTRL_OAES_NNSS_MASK ,
NVME_CTRL_OAES_TTHR_MASK ,
NVME_CTRL_OAES_RGCNS_MASK ,
NVME_CTRL_OAES_ANSAN_MASK ,
NVME_CTRL_OAES_CCRCN_MASK ,
NVME_CTRL_OAES_LHCN_MASK ,
NVME_CTRL_OAES_RLCC_MASK ,
NVME_CTRL_OAES_ZDCN_MASK ,
NVME_CTRL_OAES_DLPCN_MASK ,
NVME_CTRL_OAES_NSAN ,
NVME_CTRL_OAES_FAN ,
NVME_CTRL_OAES_ANACN ,
NVME_CTRL_OAES_PLEAN ,
NVME_CTRL_OAES_LSIAN ,
NVME_CTRL_OAES_EGEAN ,
NVME_CTRL_OAES_NNSS ,
NVME_CTRL_OAES_TTHR ,
NVME_CTRL_OAES_RGCNS ,
NVME_CTRL_OAES_ANSAN ,
NVME_CTRL_OAES_CCRCN ,
NVME_CTRL_OAES_LHCN ,
NVME_CTRL_OAES_RLCC ,
NVME_CTRL_OAES_ZDCN ,
NVME_CTRL_OAES_DLPCN
};
It's giving three flavors of the same fifteen things: a _SHIFT set, a _MASK set, and the plain set. Cute, right? Let's go through them. π
π Constants π
π§ The _SHIFT girlies β shift amounts
Each of these is the shift amount to get that event's supported bit out of the field. Lowkey the most useful little crew. β
NVME_CTRL_OAES_NSAN_SHIFTβ shift amount to get the Attached Namespace Attribute Notices event supported bit πΈNVME_CTRL_OAES_FAN_SHIFTβ shift amount to get the Firmware Activation Notices event supported bit π₯NVME_CTRL_OAES_ANACN_SHIFTβ shift amount to get the Asymmetric Namespace Access Change Notices event supported bit π«NVME_CTRL_OAES_PLEAN_SHIFTβ shift amount to get the Predictable Latency Event Aggregate Log Change Notices event supported bit π¦NVME_CTRL_OAES_LSIAN_SHIFTβ shift amount to get the LBA Status Information Alert Notices event supported bit πNVME_CTRL_OAES_EGEAN_SHIFTβ shift amount to get the Endurance Group Event Aggregate Log Page Change Notices event supported bit πNVME_CTRL_OAES_NNSS_SHIFTβ shift amount to get the Normal NVM Subsystem Shutdown event supported bit πNVME_CTRL_OAES_TTHR_SHIFTβ shift amount to get the Temperature Threshold Hysteresis Recovery event supported bit π‘οΈNVME_CTRL_OAES_RGCNS_SHIFTβ shift amount to get the Reachability Groups Change Notices event supported bit πNVME_CTRL_OAES_ANSAN_SHIFTβ shift amount to get the Allocated Namespace Attribute Notices event supported bit β¨NVME_CTRL_OAES_CCRCN_SHIFTβ shift amount to get the Cross-Controller Reset Completed Notices event supported bit π«ΆNVME_CTRL_OAES_LHCN_SHIFTβ shift amount to get the Lost Host Communication Notices event supported bit π‘NVME_CTRL_OAES_RLCC_SHIFTβ shift amount to get the Rate Limiting Configuration Change event supported bit π¦NVME_CTRL_OAES_ZDCN_SHIFTβ shift amount to get the Zone Descriptor Changed Notices event supported bit ποΈNVME_CTRL_OAES_DLPCN_SHIFTβ shift amount to get the Discovery Log Page Change Notification event supported bit π
π The _MASK babes β masks
Same fifteen events, same order, except these are the masks you use to actually pull the supported bit out. Mask on, bestie. π
NVME_CTRL_OAES_NSAN_MASKβ mask to get the Attached Namespace Attribute Notices event supported bit πΈNVME_CTRL_OAES_FAN_MASKβ mask to get the Firmware Activation Notices event supported bit π₯NVME_CTRL_OAES_ANACN_MASKβ mask to get the Asymmetric Namespace Access Change Notices event supported bit π«NVME_CTRL_OAES_PLEAN_MASKβ mask to get the Predictable Latency Event Aggregate Log Change Notices event supported bit π¦NVME_CTRL_OAES_LSIAN_MASKβ mask to get the LBA Status Information Alert Notices event supported bit πNVME_CTRL_OAES_EGEAN_MASKβ mask to get the Endurance Group Event Aggregate Log Page Change Notices event supported bit πNVME_CTRL_OAES_NNSS_MASKβ mask to get the Normal NVM Subsystem Shutdown event supported bit πNVME_CTRL_OAES_TTHR_MASKβ mask to get the Temperature Threshold Hysteresis Recovery event supported bit π‘οΈNVME_CTRL_OAES_RGCNS_MASKβ mask to get the Reachability Groups Change Notices event supported bit πNVME_CTRL_OAES_ANSAN_MASKβ mask to get the Allocated Namespace Attribute Notices event supported bit β¨NVME_CTRL_OAES_CCRCN_MASKβ mask to get the Cross-Controller Reset Completed Notices event supported bit π«ΆNVME_CTRL_OAES_LHCN_MASKβ mask to get the Lost Host Communication Notices event supported bit π‘NVME_CTRL_OAES_RLCC_MASKβ mask to get the Rate Limiting Configuration Change event supported bit π¦NVME_CTRL_OAES_ZDCN_MASKβ mask to get the Zone Descriptor Changed Notices event supported bit ποΈNVME_CTRL_OAES_DLPCN_MASKβ mask to get the Discovery Log Page Change Notification event supported bit π
π The main characters β the actual bits
These are the ones with main character energy: if the bit is set, your controller supports that event. Like, congrats, she's capable. π
NVME_CTRL_OAES_NSANβ if set, the controller supports the Attached Namespace Attribute Notices event. πΈNVME_CTRL_OAES_FANβ if set, the controller supports the Firmware Activation Notices event. π₯NVME_CTRL_OAES_ANACNβ if set, the controller supports the Asymmetric Namespace Access Change Notices event. π«NVME_CTRL_OAES_PLEANβ if set, the controller supports the Predictable Latency Event Aggregate Log Change Notices event. π¦NVME_CTRL_OAES_LSIANβ if set, the controller supports the LBA Status Information Alert Notices event. πNVME_CTRL_OAES_EGEANβ if set, the controller supports the Endurance Group Event Aggregate Log Page Change Notices event. πNVME_CTRL_OAES_NNSSβ if set, the controller supports the Normal NVM Subsystem Shutdown event. πNVME_CTRL_OAES_TTHRβ if set, the controller supports the Temperature Threshold Hysteresis Recovery event. π‘οΈNVME_CTRL_OAES_RGCNSβ if set, the controller supports the Reachability Groups Change Notices event. πNVME_CTRL_OAES_ANSANβ if set, the controller supports the Allocated Namespace Attribute Notices event. β¨NVME_CTRL_OAES_CCRCNβ if set, the controller supports the Cross-Controller Reset Completed Notices event. π«ΆNVME_CTRL_OAES_LHCNβ if set, the controller supports the Lost Host Communication Notices event. π‘NVME_CTRL_OAES_RLCCβ if set, the controller supports the Rate Limiting Configuration Change event. π¦NVME_CTRL_OAES_ZDCNβ if set, the controller supports the Zone Descriptor Changed Notices event. ποΈNVME_CTRL_OAES_DLPCNβ if set, the controller supports the Discovery Log Page Change Notification event. π
That's genuinely all fifteen, in all three flavors β shifts, masks, and bits. No cap, no omissions, we ate. π
Okay that's the whole page bestie!! Thanks for reading, mwah. π
Sign-off time: this bad girl is enum nvme_id_ctrl_oaes from the libnvme(9) API Manual, dated October 2026. Go forth and check your bits, queen. πβ¨
π¦ 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