/** * vchan_tx_desc_free - free a reusable descriptor * @tx: the transfer * * This function frees a previously allocated reusable descriptor. The only * other way is to clear the DMA_CTRL_REUSE flag and submit one last time the * transfer. * * Returns 0 upon success
*/ int vchan_tx_desc_free(struct dma_async_tx_descriptor *tx)
{ struct virt_dma_chan *vc = to_virt_chan(tx->chan); struct virt_dma_desc *vd = to_virt_desc(tx); unsignedlong flags;
/* * This tasklet handles the completion of a DMA descriptor by * calling its callback and freeing it.
*/ staticvoid vchan_complete(struct tasklet_struct *t)
{ struct virt_dma_chan *vc = from_tasklet(vc, t, task); struct virt_dma_desc *vd, *_vd; struct dmaengine_desc_callback cb;
LIST_HEAD(head);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.