libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ’… libnvme(9) β€” enum nvme_id_ctrl_ctratt πŸ’…

okay bestie so this is one of those pages from the libnvme API manual (yeah, the one that shows up as libnvme(9) in your man viewer) and listen, it's literally just a big glowing list of controller attributes β€” like, the personality quiz the NVMe controller fills out about itself. πŸ¦‹ No functions to call, no drama, just the enum that names every bit and field of the CTRATT thing. Let's go. ✨


🌸 NAME 🌸

enum nvme_id_ctrl_ctratt β€” Controller attributes πŸ‘‘

fr fr that's it, that's the whole name. Short king.

⭐ SYNOPSIS ⭐

enum nvme_id_ctrl_ctratt {
    NVME_CTRL_CTRATT_HIDS_SHIFT ,
    NVME_CTRL_CTRATT_NOPSPM_SHIFT ,
    NVME_CTRL_CTRATT_NSETS_SHIFT ,
    NVME_CTRL_CTRATT_RRLVLS_SHIFT ,
    NVME_CTRL_CTRATT_EGS_SHIFT ,
    NVME_CTRL_CTRATT_PLM_SHIFT ,
    NVME_CTRL_CTRATT_TBKAS_SHIFT ,
    NVME_CTRL_CTRATT_NG_SHIFT ,
    NVME_CTRL_CTRATT_SQA_SHIFT ,
    NVME_CTRL_CTRATT_ULIST_SHIFT ,
    NVME_CTRL_CTRATT_MDS_SHIFT ,
    NVME_CTRL_CTRATT_FCM_SHIFT ,
    NVME_CTRL_CTRATT_VCM_SHIFT ,
    NVME_CTRL_CTRATT_DEG_SHIFT ,
    NVME_CTRL_CTRATT_DNVMS_SHIFT ,
    NVME_CTRL_CTRATT_ELBAS_SHIFT ,
    NVME_CTRL_CTRATT_MEM_SHIFT ,
    NVME_CTRL_CTRATT_HMBR_SHIFT ,
    NVME_CTRL_CTRATT_RHII_SHIFT ,
    NVME_CTRL_CTRATT_FDPS_SHIFT ,
    NVME_CTRL_CTRATT_PLS_SHIFT ,
    NVME_CTRL_CTRATT_PMS_SHIFT ,
    NVME_CTRL_CTRATT_VMS_SHIFT ,
    NVME_CTRL_CTRATT_IIELLSS_SHIFT ,
    NVME_CTRL_CTRATT_HIDS_MASK ,
    NVME_CTRL_CTRATT_NOPSPM_MASK ,
    NVME_CTRL_CTRATT_NSETS_MASK ,
    NVME_CTRL_CTRATT_RRLVLS_MASK ,
    NVME_CTRL_CTRATT_EGS_MASK ,
    NVME_CTRL_CTRATT_PLM_MASK ,
    NVME_CTRL_CTRATT_TBKAS_MASK ,
    NVME_CTRL_CTRATT_NG_MASK ,
    NVME_CTRL_CTRATT_SQA_MASK ,
    NVME_CTRL_CTRATT_ULIST_MASK ,
    NVME_CTRL_CTRATT_MDS_MASK ,
    NVME_CTRL_CTRATT_FCM_MASK ,
    NVME_CTRL_CTRATT_VCM_MASK ,
    NVME_CTRL_CTRATT_DEG_MASK ,
    NVME_CTRL_CTRATT_DNVMS_MASK ,
    NVME_CTRL_CTRATT_ELBAS_MASK ,
    NVME_CTRL_CTRATT_MEM_MASK ,
    NVME_CTRL_CTRATT_HMBR_MASK ,
    NVME_CTRL_CTRATT_RHII_MASK ,
    NVME_CTRL_CTRATT_FDPS_MASK ,
    NVME_CTRL_CTRATT_PLS_MASK ,
    NVME_CTRL_CTRATT_PMS_MASK ,
    NVME_CTRL_CTRATT_VMS_MASK ,
    NVME_CTRL_CTRATT_IIELLSS_MASK ,
    NVME_CTRL_CTRATT_128_ID ,
    NVME_CTRL_CTRATT_NON_OP_PSP ,
    NVME_CTRL_CTRATT_NVM_SETS ,
    NVME_CTRL_CTRATT_READ_RECV_LVLS ,
    NVME_CTRL_CTRATT_ENDURANCE_GROUPS ,
    NVME_CTRL_CTRATT_PREDICTABLE_LAT ,
    NVME_CTRL_CTRATT_TBKAS ,
    NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY ,
    NVME_CTRL_CTRATT_SQ_ASSOCIATIONS ,
    NVME_CTRL_CTRATT_UUID_LIST ,
    NVME_CTRL_CTRATT_MDS ,
    NVME_CTRL_CTRATT_FIXED_CAP ,
    NVME_CTRL_CTRATT_VARIABLE_CAP ,
    NVME_CTRL_CTRATT_DEL_ENDURANCE_GROUPS ,
    NVME_CTRL_CTRATT_DEL_NVM_SETS ,
    NVME_CTRL_CTRATT_ELBAS ,
    NVME_CTRL_CTRATT_MEM ,
    NVME_CTRL_CTRATT_HMBR ,
    NVME_CTRL_CTRATT_RHII ,
    NVME_CTRL_CTRATT_FDPS ,
    NVME_CTRL_CTRATT_PLS ,
    NVME_CTRL_CTRATT_PMS ,
    NVME_CTRL_CTRATT_VMS ,
    NVME_CTRL_CTRATT_IIELLSS ,
    NVME_CTRL_CTRATT_IIELLSS_POWER_STATE ,
    NVME_CTRL_CTRATT_IIELLSS_GLOBAL

};

like, yes, there's a stray blank line before the closing brace. iconic. we don't fix it, we respect it. 🫢


✨ Constants ✨

πŸŽ€ the _SHIFT girlies (bit positions, iykyk)

  • NVME_CTRL_CTRATT_HIDS_SHIFT β€” HIDS shift
  • NVME_CTRL_CTRATT_NOPSPM_SHIFT β€” NOPSPM shift
  • NVME_CTRL_CTRATT_NSETS_SHIFT β€” NSETS shift
  • NVME_CTRL_CTRATT_RRLVLS_SHIFT β€” RRLVLS shift
  • NVME_CTRL_CTRATT_EGS_SHIFT β€” EGS shift
  • NVME_CTRL_CTRATT_PLM_SHIFT β€” PLM shift
  • NVME_CTRL_CTRATT_TBKAS_SHIFT β€” TBKAS shift
  • NVME_CTRL_CTRATT_NG_SHIFT β€” NG shift
  • NVME_CTRL_CTRATT_SQA_SHIFT β€” SQA shift
  • NVME_CTRL_CTRATT_ULIST_SHIFT β€” ULIST shift
  • NVME_CTRL_CTRATT_MDS_SHIFT β€” MDS shift
  • NVME_CTRL_CTRATT_FCM_SHIFT β€” FCM shift
  • NVME_CTRL_CTRATT_VCM_SHIFT β€” VCM shift
  • NVME_CTRL_CTRATT_DEG_SHIFT β€” DEG shift
  • NVME_CTRL_CTRATT_DNVMS_SHIFT β€” DNVMS shift
  • NVME_CTRL_CTRATT_ELBAS_SHIFT β€” ELBAS shift
  • NVME_CTRL_CTRATT_MEM_SHIFT β€” MEM shift
  • NVME_CTRL_CTRATT_HMBR_SHIFT β€” HMBR shift
  • NVME_CTRL_CTRATT_RHII_SHIFT β€” RHII shift
  • NVME_CTRL_CTRATT_FDPS_SHIFT β€” FDPS shift
  • NVME_CTRL_CTRATT_PLS_SHIFT β€” PLS shift
  • NVME_CTRL_CTRATT_PMS_SHIFT β€” PMS shift
  • NVME_CTRL_CTRATT_VMS_SHIFT β€” VMS shift
  • NVME_CTRL_CTRATT_IIELLSS_SHIFT β€” IIELLSS shift

πŸ’œ the _MASK besties (the actual bit catchers)

  • NVME_CTRL_CTRATT_HIDS_MASK β€” HIDS mask
  • NVME_CTRL_CTRATT_NOPSPM_MASK β€” NOPSPM mask
  • NVME_CTRL_CTRATT_NSETS_MASK β€” NSETS mask
  • NVME_CTRL_CTRATT_RRLVLS_MASK β€” RRLVLS mask
  • NVME_CTRL_CTRATT_EGS_MASK β€” EGS mask
  • NVME_CTRL_CTRATT_PLM_MASK β€” PLM mask
  • NVME_CTRL_CTRATT_TBKAS_MASK β€” TBKAS mask
  • NVME_CTRL_CTRATT_NG_MASK β€” NG mask
  • NVME_CTRL_CTRATT_SQA_MASK β€” SQA mask
  • NVME_CTRL_CTRATT_ULIST_MASK β€” ULIST mask
  • NVME_CTRL_CTRATT_MDS_MASK β€” MDS mask
  • NVME_CTRL_CTRATT_FCM_MASK β€” FCM mask
  • NVME_CTRL_CTRATT_VCM_MASK β€” VCM mask
  • NVME_CTRL_CTRATT_DEG_MASK β€” DEG mask
  • NVME_CTRL_CTRATT_DNVMS_MASK β€” DNVMS mask
  • NVME_CTRL_CTRATT_ELBAS_MASK β€” ELBAS mask
  • NVME_CTRL_CTRATT_MEM_MASK β€” MEM mask
  • NVME_CTRL_CTRATT_HMBR_MASK β€” HMBR mask
  • NVME_CTRL_CTRATT_RHII_MASK β€” RHII mask
  • NVME_CTRL_CTRATT_FDPS_MASK β€” FDPS mask
  • NVME_CTRL_CTRATT_PLS_MASK β€” PLS mask
  • NVME_CTRL_CTRATT_PMS_MASK β€” PMS mask
  • NVME_CTRL_CTRATT_VMS_MASK β€” VMS mask
  • NVME_CTRL_CTRATT_IIELLSS_MASK β€” IIELLSS mask

πŸ”₯ the actual attribute values (main character energy)

  • NVME_CTRL_CTRATT_128_ID β€” 128-bit Host Identifier supported πŸ’–
  • NVME_CTRL_CTRATT_NON_OP_PSP β€” Non-Operational Poser State Permissive Mode supported 😭 (yes bestie, it literally says "Poser" β€” that's the page's own typo, not mine, I would never)
  • NVME_CTRL_CTRATT_NVM_SETS β€” NVM Sets supported
  • NVME_CTRL_CTRATT_READ_RECV_LVLS β€” Read Recovery Levels supported
  • NVME_CTRL_CTRATT_ENDURANCE_GROUPS β€” Endurance Groups supported
  • NVME_CTRL_CTRATT_PREDICTABLE_LAT β€” Predictable Latency Mode supported
  • NVME_CTRL_CTRATT_TBKAS β€” Traffic Based Keep Alive Support
  • NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY β€” Namespace Granularity reporting supported
  • NVME_CTRL_CTRATT_SQ_ASSOCIATIONS β€” SQ Associations supported
  • NVME_CTRL_CTRATT_UUID_LIST β€” UUID List reporting supported
  • NVME_CTRL_CTRATT_MDS β€” Multi-Domain Subsystem supported
  • NVME_CTRL_CTRATT_FIXED_CAP β€” Fixed Capacity Management supported
  • NVME_CTRL_CTRATT_VARIABLE_CAP β€” Variable Capacity Management supported
  • NVME_CTRL_CTRATT_DEL_ENDURANCE_GROUPS β€” Delete Endurance Groups supported
  • NVME_CTRL_CTRATT_DEL_NVM_SETS β€” Delete NVM Sets supported
  • NVME_CTRL_CTRATT_ELBAS β€” Extended LBA Formats supported
  • NVME_CTRL_CTRATT_MEM β€” MDTS and Size Limits Exclude Metadata supported
  • NVME_CTRL_CTRATT_HMBR β€” HMB Restrict Non-Operational Power State Access
  • NVME_CTRL_CTRATT_RHII β€” Reservations and Host Identifier Interaction
  • NVME_CTRL_CTRATT_FDPS β€” Flexible Data Placement supported
  • NVME_CTRL_CTRATT_PLS β€” Power Limit Support
  • NVME_CTRL_CTRATT_PMS β€” Power Measurement Support
  • NVME_CTRL_CTRATT_VMS β€” Voltage Measurement Support
  • NVME_CTRL_CTRATT_IIELLSS β€” Idle I/O Exit Latency Limit Support and Scope
  • NVME_CTRL_CTRATT_IIELLSS_POWER_STATE β€” Each operational power state scope
  • NVME_CTRL_CTRATT_IIELLSS_GLOBAL β€” All operational power states scope 🌈
ngl there are no functions, no return values, no errno, no exit statuses on this page β€” it's purely a constant party. That's the whole vibe check. πŸ’…

and that's the page bestie, no cap πŸ§šπŸ’œ β€” brought to you by the October 2026 edition of the libnvme(9) API manual, enum nvme_id_ctrl_ctratt and all its little bit-shifty children. go forth and mask responsibly. πŸŽ€πŸŒ·

πŸ“¦ where this page comes from