ddi_mem_alloc(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

ddi_mem_alloc(9f)

ddi_mem_alloc(9F)              Kernel Functions              ddi_mem_alloc(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 allocated
                      memory.


       real_length    The length in bytes that was  allocated.  Alignment  and
                      padding  requirements may cause ddi_mem_alloc() to allo‐
                      cate more memory than requested in length.


   ddi_mem_free()
       kaddr    The memory returned from a successful call to ddi_mem_alloc().


DESCRIPTION
       The ddi_mem_alloc() function allocates memory  for  DMA  transfers  and
       should  be used if the device is performing sequential, unidirectional,
       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 argu‐
       ment and other limits imposed by the system.


       Note that you must still use DMA  resource  allocation  functions  (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.


       The  ddi_mem_free()  function  frees up memory allocated by ddi_mem_al‐
       loc().

RETURN VALUES
       The ddi_mem_alloc() function returns:

       DDI_SUCCESS    Memory successfully allocated


       DDI_FAILURE    Allocation failed


CONTEXT
       The ddi_mem_alloc() function can be called  from  user,  interrupt,  or
       kernel  context, except when flags is set to 1, in which case it cannot
       be called from interrupt context.

ATTRIBUTES
       See attributes(7) for a description of the following attributes:

       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityObsolete


SEE ALSO
       attributes(7),         ddi_dma_free(9F),         ddi_dma_mem_alloc(9F),
       ddi_dma_mem_free(9F), ddi_dma_setup(9F), ddi_dma_sync(9F), ddi_iopb_al‐
       loc(9F), ddi_dma_lim_sparc(9S), ddi_dma_lim_x86(9S), ddi_dma_req(9S)


       Writing Device Drivers in Oracle Solaris 11.4

Oracle Solaris 11.4               04 Apr 2006                ddi_mem_alloc(9F)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3