• Dan Williams's avatar
    async_tx: add the async_tx api · 9bc89cd8
    Dan Williams authored
    The async_tx api provides methods for describing a chain of asynchronous
    bulk memory transfers/transforms with support for inter-transactional
    dependencies.  It is implemented as a dmaengine client that smooths over
    the details of different hardware offload engine implementations.  Code
    that is written to the api can optimize for asynchronous operation and the
    api will fit the chain of operations to the available offload resources. 
     
    	I imagine that any piece of ADMA hardware would register with the
    	'async_*' subsystem, and a call to async_X would be routed as
    	appropriate, or be run in-line. - Neil Brown
    
    async_tx exploits the capabilities of struct dma_async_tx_descriptor to
    provide an api of the following general format:
    
    struct dma_async_tx_descriptor *
    async_<operation>(..., struct dma_async_tx_descriptor *depend_tx,
    			dma_async_tx_callback cb_fn, void *cb_param)
    {
    	struct dma_chan *chan = async_tx_find_channel(depend_tx, <operation>);
    	struct dma_device *device = ch...
    9bc89cd8
async_tx.h 5.35 KB