libnvme(9)
π libnvme(9) β API Manual, bestie edition π
Okay so real talk: this is a page straight out of the libnvme API Manual, and it's about one little struct that's honestly kind of the main character of AEM messages. Buckle up π
β¨ NAME β¨
struct nvme_mi_aem_msg β the AEM Message definition. That's it, that's the whole vibe. π
πΈ SYNOPSIS πΈ
Here's the struct in all its glory β copy it exactly, no cap:
struct nvme_mi_aem_msg {
struct nvme_mi_msg_hdr hdr;
struct nvme_mi_aem_occ_list_hdr occ_list_hdr;
};
π«Ά MEMBERS π«Ά
hdrβ the general response message header. It's giving "hello, I'm the header," very introductory.occ_list_hdrβ the ae occurrence list header. This one's the lineup announcement for everything that follows, iykyk.
π¦ DESCRIPTION π¦
Every ae message starts with one of these bad boys. Literally every single one β it's the opening act. π
The occ_list_hdr defines the info about how many ae occ data entries are included. Then each entry is defined by the nvme_mi_aem_occ_data structure, and those come right after the occ_list_hdr.
Here's the spicy part π₯ β each nvme_mi_aem_occ_data structure has a fixed length header but a variable length payload, because of occurrence-specific and vendor-specific info. It's flexible like that. π
So for that exact reason: do not index the nvme_mi_aem_occ_data structures by array or by fixed offset. Nope. Don't do it. That's the one thing you cannot do here, bestie. π
And that's the whole page, periodt. π
Cute little sign-off: this gem dropped in October 2026, it's all about struct nvme_mi_aem_msg, and the manpage fam is libnvme(9). Slay, go forth and parse those messages 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