ENUM DMA_CTRL_FLAGS(9)
π enum dma_ctrl_flags(9) β Kernel API Manual
okay so bestie, buckle up: what we have here is enum dma_ctrl_flags(9), and it's genuinely the main character of the DMA world. These are the DMA flags you use to augment operation preparation, control completion, and communicate status. That's the whole vibe. Let's get into it β¨
πΈ NAME πΈ
enum dma_ctrl_flags β the flag squad for DMA operations. They do three jobs, no cap:
- augment operation preparation π
- control completion π¦
- communicate status π«
and here's the quick rundown of the whole crew:
@DMA_PREP_INTERRUPTβ trigger an interrupt (callback) upon completion of this transaction π₯@DMA_CTRL_ACKβ if clear, the descriptor cannot be reused until the client acknowledges receipt, i.e. has a chance to establish any dependency chains π@DMA_PREP_PQ_DISABLE_Pβ prevent generation of P while generating Q π@DMA_PREP_PQ_DISABLE_Qβ prevent generation of Q while generating P π@DMA_PREP_CONTINUEβ indicate to a driver that it is reusing buffers as sources that were the result of a previous operation; in the case of a PQ operation it continues the calculation with new sources π§@DMA_PREP_FENCEβ tell the driver that subsequent operations depend on the result of this operation β
β¨ SYNOPSIS β¨
enum dma_ctrl_flags {
DMA_PREP_INTERRUPT ,
DMA_CTRL_ACK ,
DMA_PREP_PQ_DISABLE_P ,
DMA_PREP_PQ_DISABLE_Q ,
DMA_PREP_CONTINUE ,
DMA_PREP_FENCE ,
DMA_CTRL_REUSE ,
DMA_PREP_CMD ,
DMA_PREP_REPEAT ,
DMA_PREP_LOAD_EOT
};
ten constants, all accounted for, we love a complete lineup π
π¦ Constants π¦
so here's the thing β some of these are literally marked -- undescribed -- in the docs. not me exposing the kernel's unfinished homework π but fr fr, that's what's written, so that's what you get:
DMA_PREP_INTERRUPTβ-- undescribed --π«ΆDMA_CTRL_ACKβ-- undescribed --π«ΆDMA_PREP_PQ_DISABLE_Pβ-- undescribed --π«ΆDMA_PREP_PQ_DISABLE_Qβ-- undescribed --π«ΆDMA_PREP_CONTINUEβ-- undescribed --π«ΆDMA_PREP_FENCEβ-- undescribed --π«Ά
(the vibes for those six are up in NAME, if you're nosy β go look π)
and now the icons who did get their descriptions written:
DMA_CTRL_REUSEβ client can reuse the descriptor and submit again till cleared or freed β»οΈDMA_PREP_CMDβ tell the driver that the data passed to DMA API is command data and the descriptor should be in different format from normal data descriptors. it's giving "special edition descriptor" πDMA_PREP_REPEATβ tell the driver that the transaction shall be automatically repeated when it ends until a transaction is issued on the same channel with theDMA_PREP_LOAD_EOTflag set. This flag is only applicable to interleaved transactions and is ignored for all other transaction types. π so it's interleaved-only, iykykDMA_PREP_LOAD_EOTβ tell the driver that the transaction shall replace any active repeated (as indicated byDMA_PREP_REPEAT) transaction when the repeated transaction ends.
β οΈ okay this next part is important, bestie, don't scroll past it: Not setting this flag when the previously queued transaction is marked with DMA_PREP_REPEAT will cause the new transaction to never be processed and stay in the issued queue forever. forever. π like a text left on read, but for descriptors. The flag is ignored if the previous transaction is not a repeated transaction.
π₯ SEE ALSO π₯
Kernel file ./include/linux/dmaengine.h, plus the whole extended universe of DMA friends:
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 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_config_single_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)
like I said. extended universe. slay π
mwah, that's the whole page π«Ά This one came from ./include/linux, dated October 2026 β so go forth and flag responsibly, bestie. periodt. ππΈ
π¦ 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