ddi_mem_free(9F)
NAME
ddi_mem_alloc, ddi_mem_free - allocate and free sequentially
accessed memory
SYNOPSIS
#include <sys/ddi.h>
#include <sys/sunddi.h>
int ddi_mem_alloc(dev_info_t *dip, ddi_dma_lim_t *limits,
uint_t length, uint_t flags, caddr_t *kaddrp, uint_t
*real_length);
void ddi_mem_free(caddr_t kaddr);
INTERFACE LEVEL
These interfaces are obsolete. ddi_dma_mem_alloc(9F) and
ddi_dma_mem_free(9F) should be used instead.
PARAMETERS
ddi_mem_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_sparc(9S) or ddi_dma_lim_x86(9S)). If
this pointer is NULL, a default set of DMA limits is
assumed.
length
The length in bytes of the desired allocation.
flags The possible flags 1 and 0 are taken to mean, respec-
tively, wait until memory is available, or do not
wait.
kaddrp
On a successful return, *kaddrp points to the allo-
cated memory.
real_length
The length in bytes that was allocated. Alignment and
padding requirements may cause ddi_mem_alloc() to
allocate more memory than requested in length.
ddi_mem_free()
kaddr The memory returned from a successful call to
ddi_mem_alloc().
DESCRIPTION
ddi_mem_alloc() allocates memory for DMA transfers and
should be used if the device is performing sequential, uni-
directional, block-sized and block-aligned transfers to or
from memory. This type of access is commonly known as
streaming access. The allocation will obey the alignment and
padding constraints as specified by the limits argument and
other limits imposed by the system.
Note that you must still use DMA resource allocation func-
tions (see ddi_dma_setup(9F)) to establish DMA resources for
the memory allocated using ddi_mem_alloc(). ddi_mem_alloc()
returns the actual size of the allocated memory object.
Because of padding and alignment requirements, the actual
size might be larger than the requested size.
ddi_dma_setup(9F) requires the actual length.
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
required.
ddi_mem_free() frees up memory allocated by ddi_mem_alloc().
RETURN VALUES
ddi_mem_alloc() returns:
DDI_SUCCESS
Memory successfully allocated.
DDI_FAILURE
Allocation failed.
CONTEXT
ddi_mem_alloc() can be called from user or interrupt con-
text, except when flags is set to 1, in which case it can
be called from user context only.
ATTRIBUTES
See attributes(5) for a description of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Stability Level | Obsolete |
|_____________________________|_____________________________|
SEE ALSO
attributes(5), ddi_dma_free(9F), ddi_dma_mem_alloc(9F),
ddi_dma_mem_free(9F), ddi_dma_setup(9F), ddi_dma_sync(9F),
ddi_iopb_alloc(9F), ddi_dma_lim_sparc(9S),
ddi_dma_lim_x86(9S), ddi_dma_req(9S)
Writing Device Drivers
Man(1) output converted with
man2html