STRUCT GLINK_CHANNEL(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so this is from the Kernel API Manual, section 9, and it's literally the whole personality of a glink channel in one struct bestie πŸŽ€


✨ NAME ✨

struct glink_channel β€” the internal representation of a channel πŸ¦‹


🌸 SYNOPSIS 🌸

struct glink_channel {
    struct rpmsg_endpoint ept;
    struct rpmsg_device *rpdev;
    struct qcom_glink *glink;
    struct kref refcount;
    spinlock_t recv_lock;
    char *name;
    unsigned int lcid;
    unsigned int rcid;
    spinlock_t intent_lock;
    struct idr liids;
    struct idr riids;
    struct work_struct intent_work;
    struct list_head done_intents;
    struct glink_core_rx_intent *buf;
    int buf_offset;
    int buf_size;
    struct completion open_ack;
    struct completion open_req;
    struct mutex intent_req_lock;
    int intent_req_result;
    bool intent_received;
    wait_queue_head_t intent_req_wq;
};

πŸ‘‘ Members πŸ‘‘

like, every single field, explained, no gatekeeping πŸ’…

  • ept β€” the rpmsg endpoint this channel is associated with 🫢
  • rpdev β€” the rpdev reference, and lowkey she's only used for primary endpoints
  • glink β€” the qcom_glink context handle, the whole vibe container
  • refcount β€” refcount for the channel object, keeping her alive, main character energy ✨
  • recv_lock β€” guard for ept.cb, protective queen
  • name β€” unique channel name/identifier, her literal government name
  • lcid β€” channel id, in local space
  • rcid β€” channel id, in remote space
  • intent_lock β€” lock protecting liids and riids 🫑
  • liids β€” idr of all local intents
  • riids β€” idr of all remote intents
  • intent_work β€” the worker responsible for transmitting rx_done packets, she's got a job fr fr
  • done_intents β€” list of intents that need to be announced rx_done
  • buf β€” receive buffer, for gathering fragments 🧩
  • buf_offset β€” write offset in buf
  • buf_size β€” size of current buf
  • open_ack β€” completed once remote has acked the open-request βœ…
  • open_req β€” completed once open-request has been received
  • intent_req_lock β€” synchronises multiple intent requests, no fighting in the group chat pls
  • intent_req_result β€” result of intent request
  • intent_received β€” flag indicating that an intent has been received 🚩
  • intent_req_wq β€” wait queue for intent_req signalling

πŸ”₯ SEE ALSO πŸ”₯


🌈 that's the whole page, ate and left no crumbs. this one lives in ./drivers/rpmsg, it's dated October 2026, and it's your girl struct glink_channel(9) signing off β€” mwah πŸ’‹πŸ’œ

πŸ“¦ where this page comes from