ddi_iopb_alloc(9F)
NAME
ddi_iopb_alloc, ddi_iopb_free − allocate and free consistent memory
SYNOPSIS
#include <sys/ddi.h>
#include <sys/sunddi.h>
int ddi_iopb_alloc(dev_info_t ∗dip, ddi_dma_lim_t ∗limits,
u_int length, caddr_t ∗iopbp);
void ddi_iopb_free(caddr_t iopb);
ARGUMENTS
ddi_iopb_alloc()
dip A pointer to the device’s dev_info structure.
limits A pointer to a DMA limits structure for this device (see ddi_dma_lim(9S)). If this pointer is NULL , a default set of DMA limits is assumed.
length The length in bytes of the desired allocation.
iopbp A pointer to a caddr_t. On a successful return, ∗iopbp points to the allocated storage.
ddi_iopb_free()
iopb The iopb returned from a successful call to ddi_iopb_alloc().
INTERFACE LEVEL
SPARC architecture specific (SPARC DDI).
DESCRIPTION
ddi_iopb_alloc() allocates memory addressable by the caller’s device (as described by both the dip and limits arguments) in a way that a consistent view (see ddi_dma_req(9S)) as well as efficient use of memory is gained. The allocation will obey the alignment and padding constraints as specified in the limits argument and other limits imposed by the system. The limits argument may be NULL , in which case the system picks a reasonable limits.
Note that you still must use DMA resource allocation functions (see ddi_dma_setup(9F)) to establish DMA resources for the memory allocated using ddi_iopb_alloc().
In order to make the view of a memory object shared between a CPU and a DMA device consistent, explicit synchronization steps using ddi_dma_sync(9F) or ddi_dma_free(9F) are still required. However the DMA resources will be allocated so that these synchronization steps are as efficient as possible.
ddi_iopb_free() frees up memory allocated by ddi_iopb_alloc().
RETURN VALUES
ddi_iopb_alloc() returns:
DDI_SUCCESS
Memory successfully allocated.
DDI_FAILURE
Allocation failed.
CONTEXT
These functions can be called from user or interrupt context.
SEE ALSO
ddi_dma_setup(9F), ddi_dma_lim(9S), ddi_dma_req(9S), ddi_mem_alloc(9F)
SunOS 5.1 Writing Device Drivers
NOTES
This function uses scarce system resources. Use it selectively.
SunOS 5.2 — Last change: 13 Sep 1992