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

개요

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

ddi_dma_setup(9f)

ddi_dma_setup(9F)              Kernel Functions              ddi_dma_setup(9F)



NAME
       ddi_dma_setup - setup DMA resources

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

       int ddi_dma_setup(dev_info_t *dip, ddi_dma_req_t *dmareqp,
            ddi_dma_handle_t *handlep);

INTERFACE LEVEL
       This interface is obsolete. The functions ddi_dma_addr_bind_handle(9F),
       ddi_dma_alloc_handle(9F),                  ddi_dma_buf_bind_handle(9F),
       ddi_dma_free_handle(9F),  and  ddi_dma_unbind_handle(9F) should be used
       instead.

PARAMETERS
       dip        A pointer to the device's dev_info structure.


       dmareqp    A pointer to a DMA request structure (see ddi_dma_req(9S)).


       handlep    A pointer to a DMA handle to be filled in. See below  for  a
                  discussion  of  a  handle.  If  handlep is NULL, the call to
                  ddi_dma_setup() is considered an  advisory  call,  in  which
                  case  no resources are allocated, but a value indicating the
                  legality and the feasibility of the request is returned.


DESCRIPTION
       The ddi_dma_setup() function allocates resources for  a  memory  object
       such that a device can perform DMA to or from that object.


       A call to ddi_dma_setup() informs the system that device referred to by
       dip wishes to perform DMA to  or  from  a  memory  object.  The  memory
       object,  the  device's  DMA capabilities, the device driver's policy on
       whether to wait for resources, are all  specified  in  the  ddi_dma_req
       structure pointed to by dmareqp.


       A  successful  call to ddi_dma_setup() fills in the value pointed to by
       handlep. This is an opaque object called a DMA handle. This  handle  is
       then used in subsequent DMA calls, until ddi_dma_free(9F) is called.


       Again  a  DMA handle is opaque—drivers may not attempt to interpret its
       value. When a driver wants to enable its DMA engine, it  must  retrieve
       the  appropriate  address  to  supply to its DMA engine using a call to
       ddi_dma_htoc(9F), which takes a pointer to a DMA handle and returns the
       appropriate DMA address.


       When  DMA  transfer  completes, the driver should free up the allocated
       DMA resources by calling ddi_dma_free()

RETURN VALUES
       The ddi_dma_setup() function returns:

       DDI_DMA_MAPPED         Successfully allocated resources for the object.
                              In  the case of an advisory call, this indicates
                              that the request is legal.


       DDI_DMA_PARTIAL_MAP    Successfully allocated resources for a  part  of
                              the  object.  This  is  acceptable  when partial
                              transfers are allowed using a  flag  setting  in
                              the  ddi_dma_req  structure (see ddi_dma_req(9S)
                              and ddi_dma_movwin(9F)).


       DDI_DMA_NORESOURCES    When no resources are available.


       DDI_DMA_NOMAPPING      The object  cannot  be  reached  by  the  device
                              requesting the resources.


       DDI_DMA_TOOBIG         The  object is too big and exceeds the available
                              resources. The maximum size varies depending  on
                              machine and configuration.


CONTEXT
       The  ddi_dma_setup()  function  can  be called from user, interrupt, or
       kernel context, except when  the  dmar_fp  member  of  the  ddi_dma_req
       structure  pointed to by dmareqp is set to DDI_DMA_SLEEP, 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 _ Stability LevelObsolete


SEE ALSO
       attributes(7),   ddi_dma_addr_bind_handle(9F),  ddi_dma_addr_setup(9F),
       ddi_dma_alloc_handle(9F), ddi_dma_buf_bind_handle(9F), ddi_dma_buf_set‐
       up(9F),  ddi_dma_free(9F),  ddi_dma_free_handle(9F),  ddi_dma_htoc(9F),
       ddi_dma_movwin(9F),    ddi_dma_sync(9F),     ddi_dma_unbind_handle(9F),
       ddi_dma_req(9S)


       Writing Device Drivers in Oracle Solaris 11.4

NOTES
       The  construction  of  the ddi_dma_req structure is complicated. Use of
       the provided interface functions such as ddi_dma_buf_setup(9F)  simpli‐
       fies this task.



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