STRUCT QCOM_SMD_CHANNEL(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

struct qcom_smd_channel β€” the smd channel struct, bestie. it's the whole vibe of an SMD channel in one little struct πŸŽ€

so this page lives in the Kernel API Manual, and yeah we're gonna go through literally every single member bc nothing gets skipped in this house ✨


🌸 SYNOPSIS 🌸

like, here's what she looks like, no cap:

struct qcom_smd_channel {
    struct qcom_smd_edge *edge;
    struct qcom_smd_endpoint *qsept;
    bool registered;
    char *name;
    enum smd_channel_state state;
    enum smd_channel_state remote_state;
    wait_queue_head_t state_change_event;
    struct smd_channel_info_pair *info;
    struct smd_channel_info_word_pair *info_word;
    spinlock_t tx_lock;
    wait_queue_head_t fblockread_event;
    void *tx_fifo;
    void *rx_fifo;
    int fifo_size;
    void *bounce_buffer;
    spinlock_t recv_lock;
    int pkt_size;
    void *drvdata;
    struct list_head list;
 };

she's giving structured. she's giving fields. we love her πŸ’…


✨ MEMBERS ✨

okay so this is the part where we go member by member and I tell you what each one rly does 🫢

  • edge β€” the qcom_smd_edge this channel is living on. like her home address fr 🏠
  • qsept β€” reference to a associated smd endpoint πŸ”—
  • registered β€” flag to indicate if the channel is registered βœ…
  • name β€” name of the channel 🏷️
  • state β€” local state of the channel, yk, hers πŸ’β€β™€οΈ
  • remote_state β€” remote state of the channel, the other side's whole situation πŸ‘€
  • state_change_event β€” state change event ⚑
  • info β€” byte aligned outgoing/incoming channel info πŸ“¬
  • info_word β€” word aligned outgoing/incoming channel info πŸ“¨
  • tx_lock β€” lock to make writes to the channel mutually exclusive. no two besties writing at once okay πŸ”’
  • fblockread_event β€” wakeup event tied to tx fBLOCKREADINTR ⏰
  • tx_fifo β€” pointer to the outgoing ring buffer πŸš€
  • rx_fifo β€” pointer to the incoming ring buffer πŸ“₯
  • fifo_size β€” size of each ring buffer πŸ“
  • bounce_buffer β€” bounce buffer for reading wrapped packets πŸ€ (literally what it sounds like, she bounces)
  • recv_lock β€” guard for rx info modifications and cb pointer πŸ›‘οΈ
  • pkt_size β€” size of the currently handled packet πŸ“¦
  • drvdata β€” driver private data 🀫 (private!! we don't ask)
  • list β€” lite entry for channels in qcom_smd_edge πŸ”—

πŸ‘‘ SEE ALSO πŸ‘‘

go read the actual kernel file bestie, it's all there: Kernel file ./drivers/rpmsg/qcom_smd.c β€” and while you're at it, these icons too πŸ’œ


ok that's the whole page, nothing skipped, nothing invented, we ate and left no crumbs πŸ”₯

and that's a wrap on struct qcom_smd_channel(9) πŸŽ€ this one came out of ./drivers/rpmsg, dated October 2026, and it's filed under struct qcom_smd_channel(9) β€” mwah, go read the source, ily, bye πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from