STRUCT MHUV3_EXTENSION(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ‘‘ struct mhuv3_extension(9) πŸ‘‘

okay so bestie, welcome to Kernel API Manual β€” this is the page for struct mhuv3_extension(9), aka the MHUv3 extension descriptor. it's the lil struct that holds all the deets about one MHUv3 extension, and honestly? it's giving "quietly holding the whole thing together" energy. 🫢


✨ SYNOPSIS ✨

like, here's the literal shape of it, no cap:

struct mhuv3_extension {
    enum mhuv3_extension_type type;
    unsigned int num_chans;
    unsigned int base_ch_idx;
    struct mbox_chan *(*mbox_of_xlate)(struct mhuv3 *mhu, unsigned int
channel, unsigned int param);
    void (*combined_irq_setup)(struct mhuv3 *mhu);
    int (*channels_init)(struct mhuv3 *mhu);
    struct mbox_chan *(*chan_from_comb_irq_get)(struct mhuv3 *mhu);
    u32 pending_db[MHUV3_DBCW_MAX];
    spinlock_t pending_lock;
 };

πŸŽ€ Members πŸŽ€

bestie, let's go field by field, because every single one of these matters:

  • type β€” the Type of extension. literally which flavour of extension this is πŸ’…
  • num_chans β€” Max number of channels found for this extension. the ceiling, the limit, the whole vibe.
  • base_ch_idx β€” First channel number assigned to this extension, picked from the set of all mailbox channels descriptors created. yeah it's a mouthful β€” it's the starting index this extension got handed out of the pool of all the mailbox channel descriptors that were created. 🎯
  • mbox_of_xlate β€” Extension specific helper to parse DT and lookup associated channel from the related 'mboxes' property. it's the one that reads the device tree (DT) and finds the matching channel for you. iconique.
  • combined_irq_setup β€” Extension specific helper to setup the combined irq. yes, combined. the irq that's doing the most. πŸ”₯
  • channels_init β€” Extension specific helper to initialize channels. it goes and gets the channels ready.
  • chan_from_comb_irq_get β€” Extension specific helper to lookup which channel triggered the combined irq. the detective function, fr fr. πŸ”
  • pending_db β€” Array of per-channel pending doorbells. sized MHUV3_DBCW_MAX, one slot per channel, keeping track of what's still pending. πŸ›ŽοΈ
  • pending_lock β€” Protect access to pending_db. spinlock. do not touch pending_db without it, bestie, that's the whole point πŸ™ˆ
lowkey important: pending_lock exists specifically to protect access to pending_db. treat that as a package deal. 🫢

🌈 SEE ALSO 🌈

go poke around these if you want the full lore, iykyk:

  • Kernel file ./drivers/mailbox/arm_mhuv3.c
  • struct mhuv3_protocol_ops(9)
  • struct mhuv3_mbox_chan_priv(9)
  • struct mhuv3(9)

and that's the whole page, bestie πŸŽ€βœ¨ this one lives over in ./drivers/mailbox, and it was dated October 2026 β€” yes, 2026, we're being so ahead of schedule πŸ’… see you in the next manpage, mwah πŸ¦‹πŸ’–

πŸ“¦ where this page comes from