libnvme(9)

πŸ’– struct nvme_directive_send_args β€” bestie edition

okay so. we're deep in libnvme(9) territory, aka the API Manual, and today's main character is a struct. yes a whole struct. and honestly? she's serving.

struct nvme_directive_send_args is literally the argument bundle for the NVMe Directive Send command. think of her as the little folder you hand over so the kernel knows what you're sending, where it's going, and how long you're willing to wait for it. no cap.


✨ SYNOPSIS ✨

here's the whole glow-up, exactly as she is:

struct nvme_directive_send_args {
    __u32 *result;
    void *data;
    int args_size;
    int fd;
    __u32 timeout;
    __u32 nsid;
    enum nvme_directive_send_doper doper;
    enum nvme_directive_dtype dtype;
    __u32 cdw12;
    __u32 data_len;
    __u16 dspec;
};

not a single field out of place. iconic behavior fr fr. πŸŽ€


🌸 Members 🌸

meet the girlies. each one matters, no skipping:

  • result β€” if everything goes well, this is where the CQE dword0 value lands. she's the receipt. 🧾
  • data β€” the data payload that's gonna get sent. the actual cargo. πŸ“¦
  • args_size β€” the size of struct nvme_directive_send_args. yes she contains her own measurements, it's giving self-aware. πŸ’…
  • fd β€” file descriptor of the nvme device. this is your ticket in. 🎟️
  • timeout β€” timeout in ms. how long you're willing to stand there waiting before you're like "okay bestie i'm leaving". ⏳
  • nsid β€” Namespace ID, if applicable. the "if applicable" is doing a lot of heavy lifting ngl. πŸ¦‹
  • doper β€” Directive send operation, see enum nvme_directive_send_doper. the what are we even doing field. ✨
  • dtype β€” Directive type, see enum nvme_directive_dtype. the flavor field. 🌈
  • cdw12 β€” Directive specific command dword12. say it with me: dword twelve. πŸ“
  • data_len β€” Length of data payload in bytes. so she knows exactly how much data she's hauling. πŸ“
  • dspec β€” Directive specific field. the mysterious one. the enigma. we love her. πŸ’œ

heads up bestie: this page is API reference, so every field above is literally part of the struct contract. if you change one, the whole vibe check fails. 😭

okay that's the whole page!! every single field accounted for, nothing dropped, periodt. this was libnvme(9) from the API Manual, dated August 2026 β€” mwah, go forth and send some directives responsibly πŸ«ΆπŸ’–βœ¨

πŸ“¦ where this page comes from