dmaengine_p..._single_safe(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– dmaengine_p..._single_safe(9) πŸ’–

okay so bestie, welcome to the Kernel API Manual β€” yes that's the manual name, we're fancy here β€” and today's main character is a little function called dmaengine_prep_config_single_safe, and the way that name is SO long, it's giving "I have a lot of responsibilities" energy. slay. ✨


✨ NAME ✨

dmaengine_prep_config_single_safe β€” prepare a single-buffer DMA transfer with atomic slave configuration update πŸŽ€

like, it sets up ONE buffer's worth of DMA transfer, and it updates the slave config atomically while doing it. no cap, that's the whole vibe.


🌸 SYNOPSIS 🌸

struct dma_async_tx_descriptor * dmaengine_prep_config_single_safe
(struct dma_chan *chan , dma_addr_t buf , size_t len , enum
dma_transfer_direction dir , unsigned long flags , struct
dma_slave_config *config );

six arguments, one descriptor back. she's thorough. πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • chan β€” the DMA channel πŸ’œ like, which channel are we doing this on
  • buf β€” the DMA buffer address πŸ“ where the data lives
  • len β€” length of the transfer in bytes πŸ“ yes, in BYTES, don't get cute with it
  • dir β€” DMA transfer direction 🧭 which way the data's going
  • flags β€” transfer preparation flags 🚩 the little knobs for prep time
  • config β€” DMA slave configuration for this transfer βš™οΈ the slave config that gets applied atomically, that's the whole point bestie

🌈 DESCRIPTION 🌈

ngl, this section is short and it knows it. for the details, the manual literally just points you at dmaengine_prep_config_sg_safe. so like… go read that one, she has the full story. 🫢

fr fr though, "detail see dmaengine_prep_config_sg_safe" is the entire description, so don't come for me, I'm just the messenger πŸ’€

πŸ‘‘ SEE ALSO πŸ‘‘

the kernel file ./include/linux/dmaengine.h is where the magic lives, and then there's this absolute ICONIC list of friends β€” buckle up, we're going through all of them ✨:

dma_cookie_t(9), enum dma_status(9), enum dma_transaction_type(9), enum dma_transfer_direction(9), struct data_chunk(9), struct dma_interleaved_template(9), struct dma_vec(9), enum dma_ctrl_flags(9), enum sum_check_bits(9), enum sum_check_flags(9), enum dma_desc_metadata_mode(9), struct dma_chan_percpu(9), struct dma_router(9), struct dma_chan(9), struct dma_chan_dev(9), enum dma_slave_buswidth(9), struct dma_slave_config(9), enum dma_residue_granularity(9), struct dma_slave_caps(9), dma_filter_fn(9), struct dma_async_tx_descriptor(9), struct dma_tx_state(9), enum dmaengine_alignment(9), struct dma_slave_map(9), struct dma_filter(9), struct dma_device(9), dmaengine_prep_peripheral_dma_vec(9), dmaengine_prep_config_sg_safe(9), dmaengine_prep_dma_memset(9), dmaengine_terminate_all(9), dmaengine_terminate_async(9), dmaengine_synchronize(9), dmaengine_terminate_sync(9), dma_async_issue_pending(9), dma_async_is_tx_complete(9), dma_async_is_complete(9)

the way that list just KEEPS GOING 😭 but every single one of them ate, periodt. πŸ’…


and that's the page!! source is ./include/linux, dated October 2026, so mark your calendars bestie β€” this manual page is from the future and she's thriving. 🌟 stay hydrated, read dmaengine_prep_config_sg_safe for the real tea, and ily, bye!! πŸŽ€πŸ’–πŸ¦‹πŸŒΈβ­

πŸ“¦ where this page comes from