DMA Linux Parallel Implementation API

group aml_dma_linux_par

Parallel DMA implementation.

DMA logic implemented based on general linux API, asynchronous execution threads. This DMA implementation moves between pointers allocated with an aml_area_linux.

Defines

AML_DMA_LINUX_PAR_DECL(name)

Static declaration of aml_dma_linux_par structure.

AML_DMA_LINUX_PAR_ALLOCSIZE

Static declaration of aml_dma_linux_par structure size.

Functions

int aml_dma_linux_par_create(struct aml_dma **dma, size_t nbreqs, size_t nbthreads)

Allocates and initializes a new parallel DMA.

Return

0 if successful; an error code otherwise.

Parameters
  • dma: an address where the pointer to the newly allocated DMA structure will be stored.

  • nbreqs: the initial number of slots for asynchronous requests that are in-flight (will be increased automatically if necessary).

  • nbthreads: the number of threads to launch for each request.

int aml_dma_linux_par_init(struct aml_dma *dma, size_t nbreqs, size_t nbthreads)

Initializes a new parallel DMA.

Return

0 if successful; an error code otherwise.

Parameters
  • dma: a pointer to a dma declared with the AML_DMA_LINUX_PAR_DECL macro

  • nbreqs: the initial number of slots for asynchronous requests that are in-flight (will be increased automatically if necessary).

  • nbthreads: the number of threads to launch for each request.

void aml_dma_linux_par_fini(struct aml_dma *dma)

Finalize a parallel DMA

void aml_dma_linux_par_destroy(struct aml_dma **dma)

Tears down a parallel DMA created with aml_dma_linux_par_create.

Parameters
  • dma: the address of a pointer to a parallel dma. Will be NULL after.

Variables

struct aml_dma_ops aml_dma_linux_par_ops

Default table of dma request operations for linux parallel dma.

struct aml_dma_linux_par_thread_data
#include <linux-par.h>

Thread data embeded inside an asynchronous dma request.

struct aml_dma_request_linux_par
#include <linux-par.h>

Inside of a parallel request for linux movement.

struct aml_dma_linux_par_data
#include <linux-par.h>

Inside of a parallel request for linux movement.

struct aml_dma_linux_par_ops
#include <linux-par.h>

Declaration of linux parallel dma operations

struct aml_dma_linux_par
#include <linux-par.h>

aml_dma structure for linux based, parallel dma movement Needs to be initialized with aml_dma_linux_par_init(). Can be passed to generic aml_dma_*() functions.