STRUCT ACPM_CHAN(9)
π NAME π
okay bestie, this is the struct acpm_chan(9) page from the Kernel API Manual, and it's all about struct acpm_chan β the driver internal representation of a channel. That's the whole assignment, no cap. π
β¨
β¨ SYNOPSIS β¨
okay so the shape is literally this, and yes the spacing and semicolons are doing their thing:
struct acpm_chan {
struct mbox_client cl;
struct mbox_chan *chan;
struct acpm_info *acpm;
struct acpm_queue tx;
struct acpm_queue rx;
struct mutex tx_lock;
struct mutex rx_lock;
unsigned int qlen;
unsigned int mlen;
u8 seqnum;
u8 id;
bool poll_completion;
unsigned long bitmap_seqnum[BITS_TO_LONGS( ACPM_SEQNUM_MAX - 1)];
struct acpm_rx_data rx_data[ACPM_SEQNUM_MAX];
};
π¦ Members π¦
clβ mailbox client. The mailbox bestie, obviously. πchanβ mailbox channel. The actual channel, slay. π¬acpmβ pointer to driver private data. It's giving "my private data, not yours" energy. πtxβ TX queue. The enqueue is done by the host. The way this queue works is a whole little system:- front index is written by the host.
- rear index is written by the firmware.
rxβ RX queue. The enqueue is done by the firmware. Same queue energy, opposite directions:- front index is written by the firmware.
- rear index is written by the host.
tx_lockβ protects TX queue. Lock it up, bestie. πrx_lockβ protects RX queue. Another lock, another slay. πqlenβ queue length. Applies to both TX/RX queues. Both of them, periodt. πmlenβ message length. Applies to both TX/RX queues. Same energy. πseqnumβ sequence number of the last message enqueued on TX queue. Last one in, tracked. π’idβ channel ID. Gotta have an ID, obviously. πpoll_completionβ indicates if the transfer needs to be polled for completion or interrupt mode is used. So: polled completion or interrupt mode, those are the options. β³bitmap_seqnumβ bitmap that tracks the messages on the TX/RX queues. Tracking them messages, very organized. ποΈrx_dataβ internal buffer used to drain the RX queue. Draining the queue, literally. π°
π SEE ALSO π
Kernel file: ./drivers/firmware/samsung/exynos-acpm.c β and here's the whole friend group, bestie:
struct acpm_shmem(9)struct acpm_chan_shmem(9)struct acpm_queue(9)struct acpm_rx_data(9)struct acpm_info(9)struct acpm_match_data(9)acpm_get_saved_rx(9)acpm_get_rx(9)acpm_dequeue_by_polling(9)acpm_wait_for_queue_slots(9)acpm_prepare_xfer(9)acpm_wait_for_message_response(9)acpm_do_xfer(9)acpm_set_xfer(9)acpm_chan_shmem_get_params(9)acpm_achan_alloc_cmds(9)acpm_free_mbox_chans(9)acpm_channels_init(9)acpm_handle_put(9)devm_acpm_release(9)acpm_get_by_node(9)devm_acpm_get_by_node(9)devm_acpm_get_by_phandle(9)
mwah π β source/version: ./drivers/firmware/samsung; date: October 2026. stay iconic, bestie π«Άβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms