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

개요

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

ddi_dma_getwin(9f)

ddi_dma_getwin(9F)             Kernel Functions             ddi_dma_getwin(9F)

NAME
       ddi_dma_getwin - activate a new DMA window

SYNOPSIS
       #include <sys/ddi.h>
       #include <sys/sunddi.h>

       int ddi_dma_getwin(ddi_dma_handle_t handle, uint_t win,
            off_t *offp, size_t *lenp, ddi_dma_cookie_t *cookiep,
            uint_t *ccountp);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI).

PARAMETERS
       handle     The DMA handle previously allocated by a call to ddi_dma_al‐
                  loc_handle(9F).


       win        Number of the window to activate.


       offp       Pointer  to  an  offset. Upon a successful return, offp will
                  contain the new offset indicating the beginning of the  win‐
                  dow within the object.


       lenp       Upon  a  successful  return,  lenp will contain the size, in
                  bytes, of the current window.


       cookiep    A pointer to the first ddi_dma_cookie(9S) structure.


       ccountp    Upon a successful return, ccountp will contain the number of
                  cookies for this DMA window.


DESCRIPTION
       ddi_dma_getwin() activates a new DMA window. If a DMA resource  alloca‐
       tion  request returns DDI_DMA_PARTIAL_MAP indicating that resources for
       less than the entire object were allocated, the current DMA window  can
       be changed by a call to ddi_dma_getwin().


       The  caller  must  first  determine the number of DMA windows, N, using
       ddi_dma_numwin(9F). ddi_dma_getwin() takes a DMA window number from the
       range [0..N-1] as the parameter win and makes it the current  DMA  win‐
       dow.


       ddi_dma_getwin()  fills  in  the first DMA cookie pointed to by cookiep
       with the appropriate address, length, and bus type. *ccountp is set  to
       the  number of DMA cookies representing this DMA object. Subsequent DMA
       cookies must be retrieved using ddi_dma_nextcookie(9F).


       ddi_dma_getwin() takes care of underlying resource synchronizations re‐
       quired to shift the window. However accessing the data prior to or  af‐
       ter  moving  the  window  requires  further synchronization steps using
       ddi_dma_sync(9F).


       ddi_dma_getwin() is normally called  from  an  interrupt  routine.  The
       first  invocation of the DMA engine is done from the driver. All subse‐
       quent invocations of the DMA engine are done from  the  interrupt  rou‐
       tine.  The interrupt routine checks to see if the request has been com‐
       pleted. If it has, the interrupt routine returns without  invoking  an‐
       other  DMA  transfer. Otherwise, it calls ddi_dma_getwin() to shift the
       current window and start another DMA transfer.

RETURN VALUES
       ddi_dma_getwin() returns:

       DDI_SUCCESS    Resources for the specified DMA window are allocated.


       DDI_FAILURE    win is not a valid window index.


CONTEXT
       ddi_dma_getwin() can be called from user, kernel, or interrupt context.

SEE ALSO
       ddi_dma_addr_bind_handle(9F),                 ddi_dma_alloc_handle(9F),
       ddi_dma_buf_bind_handle(9F),                    ddi_dma_nextcookie(9F),
       ddi_dma_numwin(9F),    ddi_dma_sync(9F),     ddi_dma_unbind_handle(9F),
       ddi_dma_cookie(9S)


       Writing Device Drivers in Oracle Solaris 11.4

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