dmaengine_terminate_sync函数源代码
时间: 2023-06-25 10:08:26 浏览: 138
停止AsyncTask源码
dmaengine_terminate_sync函数是Linux内核中DMA引擎驱动中的一个函数,用于停止DMA传输并等待所有传输完成。以下是该函数的源代码:
```
void dmaengine_terminate_sync(struct dma_chan *chan)
{
struct dma_tx_state state;
bool pending;
dmaengine_pause(chan);
do {
dmaengine_tx_status(chan, NULL, &state);
pending = state.residue || state.completed < state.cookie;
if (pending)
usleep_range(1000, 2000);
} while (pending);
dma_async_issue_pending(chan);
}
```
该函数首先调用dmaengine_pause函数暂停DMA传输,然后循环查询DMA传输状态,直到所有传输完成。在每次检查状态时,如果仍有未完成的传输,则等待一段时间后再进行下一次检查。最后,该函数使用dma_async_issue_pending函数重新启动DMA传输。
阅读全文