bcm2835_dma_create_cb_chain(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… bcm2835_dma_create_cb_chain(9) β€” the kernel API manual, bestie edition πŸŽ€

okay so this is the man page for bcm2835_dma_create_cb_chain(9), straight out of the Linux Kernel API Manual, and honestly? it's giving "let me build you a whole chain of control blocks real quick" energy. stay with me, we're gonna get through it together 🫢


✨ NAME ✨

bcm2835_dma_create_cb_chain β€” create a control block and fills data in πŸ’«

like, the whole job. makes the cb, drops the data inside. no cap.


🌸 SYNOPSIS 🌸

struct bcm2835_desc * bcm2835_dma_create_cb_chain (struct dma_chan *chan
, enum dma_transfer_direction direction , bool cyclic , u32 info , u32
finalextrainfo , size_t frames , dma_addr_t src , dma_addr_t dst ,
size_t buf_len , size_t period_len , gfp_t gfp );

she takes eleven arguments and returns a struct bcm2835_desc *. iconic behavior, honestly πŸ‘‘


πŸ¦‹ ARGUMENTS πŸ¦‹

okay so here's the whole cast of characters, one by one, no skips, we're doing all of them:

  • chan β€” the dma_chan that we're running this whole thing for. main character, literally.
  • direction β€” the direction in which we transfer. which way the vibe is flowing 🌈
  • cyclic β€” it is a cyclic transfer. bool, so it's a yes/no moment.
  • info β€” the default info bits to apply per controlblock. the everyday fit, the baseline lewk.
  • finalextrainfo β€” additional bits in the last controlblock (or when period_len is reached in case of cyclic). the little sprinkle at the end ✨
  • frames β€” number of controlblocks to allocate. how many we're making, count it out πŸŽ€
  • src β€” the src address to assign (if the S_INC bit is set in info, then it gets incremented). yes, it moves β€” mind the bit, bestie.
  • dst β€” the dst address to assign (if the D_INC bit is set in info, then it gets incremented). same deal, other side πŸ¦‹
  • buf_len β€” the full buffer length (may also be 0). zero is a valid vibe, no worries.
  • period_len β€” the period length when to apply finalextrainfo in addition to the last transfer; this will also break some controlblocks early. lowkey important: it ✨breaks things early✨ on purpose, that's the whole point, not a bug.
  • gfp β€” the GFP flag to use for allocation. the allocation mood ring πŸ’€

πŸ‘€ SEE ALSO πŸ‘€

go touch these files, iykyk:

  • Kernel file ./drivers/dma/bcm2835-dma.c
  • struct bcm2835_dmadev(9)

🫢 the sign-off 🫢

this beauty lives under ./drivers/dma, it's the October 2026 edition, and the page itself is filed as bcm2835_dma_create_cb_chain(9). go forth and chain those control blocks, bestie β€” slay πŸ’–πŸ”₯πŸ‘‘

πŸ“¦ where this page comes from