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

개요

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

ddi_umem_iosetup(9f)

ddi_umem_iosetup(9F)           Kernel Functions           ddi_umem_iosetup(9F)

NAME
       ddi_umem_iosetup - Setup I/O requests to application memory

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

       struct buf *ddi_umem_iosetup(ddi_umem_cookie_t cookie,off_t off,
            size_t len, int direction, dev_t dev, daddr_t blkno,
            int (*iodone) (struct buf *), int sleepflag);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

PARAMETERS
       cookie       The kernel memory cookie allocated by ddi_umem_lock(9F).


       off          Offset from the start of the cookie.


       len          Length of the I/O request in bytes.


       direction    Must be set to B_READ for reads from the device or B_WRITE
                    for writes to the device.


       dev          Device number


       blkno        Block number on device.


       iodone       Specific biodone(9F) routine.


       sleepflag    Determines  whether  caller can sleep for memory. Possible
                    flags are DDI_UMEM_SLEEP to allow sleeping until memory is
                    available, or DDI_UMEM_NOSLEEP to return NULL  immediately
                    if memory is not available.


DESCRIPTION
       The  ddi_umem_iosetup(9F)  function is used by drivers to setup I/O re‐
       quests  to  application  memory  which  has  been  locked  down   using
       ddi_umem_lock(9F).


       The ddi_umem_iosetup(9F) function returns a pointer to a buf(9S) struc‐
       ture  corresponding to the memory cookie cookie. Drivers can setup mul‐
       tiple buffer structures simultaneously active  using  the  same  memory
       cookie.  The buf(9S) structures can span all or part of the region rep‐
       resented by the cookie and can overlap each other. The  buf(9S)  struc‐
       ture  can  be  passed  to  ddi_dma_buf_bind_handle(9F)  to initiate DMA
       transfers to or from the locked down memory.


       The off  parameter specifies the offset from the start of  the  cookie.
       The  len  parameter represents the length of region to be mapped by the
       buffer. The direction  parameter  must  be  set  to  either  B_READ  or
       B_WRITE,  to  indicate the action that will be performed by the device.
       (Note that this direction is in the opposite sense of the  VM  system's
       direction  of  DDI_UMEMLOCK_READ and DDI_UMEMLOCK_WRITE.) The direction
       must be compatible with the flags used to create the memory  cookie  in
       ddi_umem_lock(9F).  For  example, if ddi_umem_lock() is called with the
       flags parameter set to DDI_UMEMLOCK_READ, the  direction  parameter  in
       ddi_umem_iosetup() should be set to B_WRITE.


       The  dev  parameter specifies the device to which the buffer is to per‐
       form I/O. The blkno parameter represents the block number  on  the  de‐
       vice.  It  will be assigned to the b_blkno field of the returned buffer
       structure. The iodone parameter enables the driver to identify  a  spe‐
       cific  biodone(9F)  routine  to be called by the driver when the I/O is
       complete. The sleepflag  parameter determines if the caller  can  sleep
       for  memory. DDI_UMEM_SLEEP allocations may sleep but are guaranteed to
       succeed. DDI_UMEM_NOSLEEP allocations do not sleep but may fail (return
       NULL) if memory is currently not available.


       After the I/O has completed and  the  buffer  structure  is  no  longer
       needed, the driver calls freerbuf(9F) to free the buffer structure.

RETURN VALUES
       The  ddi_umem_iosetup(9F) function returns a pointer to the initialized
       buffer header, or NULL if no space is available.

CONTEXT
       The ddi_umem_iosetup(9F) function can be called from any  context  only
       if   flag  is  set  to  DDI_UMEM_NOSLEEP.  If  DDI_UMEM_SLEEP  is  set,
       ddi_umem_iosetup(9F) can be called from user and kernel context only.

SEE ALSO
       ddi_dma_buf_bind_handle(9F),      ddi_umem_lock(9F),      freerbuf(9F),
       physio(9F), buf(9S)

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