libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ’– 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