STRUCT FWCTL_RPC_PDS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct fwctl_rpc_pds(9) πŸ’…

Okay so bestie, welcome to the Kernel API Manual β€” yes we're literally reading kernel headers for fun now, this is the era we're in, and honestly? iconic. Today's main character is struct fwctl_rpc_pds, and ngl the NAME section is giving mystery. There's no description after the dash. Nothing. Silence. The struct simply exists and refuses to explain itself. We respect the mystique. πŸŽ€


✨ SYNOPSIS ✨

Here's the whole shape of it, copied exactly, no cap:

struct fwctl_rpc_pds {
    struct {
      __u32 op;
      __u32 ep;
      __u32 rsvd;
      __u32 len;
      __aligned_u64 payload;
    } in;
    struct {
      __u32 retval;
      __u32 rsvd[2];
      __u32 len;
      __aligned_u64 payload;
    } out;
 };

See how it's split into two little nested structs, in and out? It's giving "request in, response out" energy. A whole conversation in one struct. Obsessed. πŸ¦‹


🌸 Members 🌸

πŸ’– in β€” rpc in parameters

The stuff you're sending. The ask. The "hey bestie can you do this for me" half of the struct.

  • in.op β€” the requested operation code. This is the "what do you want me to do" field, fr fr.
  • in.ep β€” the firmware endpoint to operate on. Like, which part of the firmware are we talking to. Pick your target wisely. 🎯
  • in.rsvd β€” reserved. Hands off, it's not for you, leave it alone. πŸ™ˆ
  • in.len β€” length of payload data. How many bytes are we actually sending.
  • in.payload β€” address of payload buffer. The actual goods, pointed at by address. __aligned_u64, so it's aligned, because of course it is. ✨

πŸ’œ out β€” rpc out parameters

The reply. The firmware's answer back to you. The group chat response after you send the message.

  • out.retval β€” operation result value. Did it slay or did it flop? This tells you.
  • out.rsvd β€” reserved. This one's rsvd[2], an array of two β€” so two whole reserved slots, and you're touching neither of them. πŸ’€
  • out.len β€” length of result data buffer. How much came back.
  • out.payload β€” address of payload data buffer. Where the result actually lives. Also __aligned_u64. Consistent queen. πŸ‘‘

🫢 SEE ALSO 🫢

Go read these next, it's a whole little family:

  • Kernel file ./include/uapi/fwctl/pds.h
  • struct fwctl_info_pds(9)
  • enum pds_fwctl_capabilities(9)

Lowkey reminder: the rsvd fields are reserved. Don't be the one who writes into them. That's not a vibe, that's a bug. 😭

And that's the page, bestie! Sourced from ./include/uapi/fwctl, dated October 2026, and signed off with the header struct fwctl_rpc_pds(9) because we always come full circle. πŸ’« Stay aligned, stay reserved, and go read your headers. πŸ§šπŸ’–

πŸ“¦ where this page comes from