SGI Techpubs Library

IRIX 6.5  »  Man Pages
find in page

eisa_dma_prog(D3X)

 NAME

     eisa_dma_prog - program a DMA operation for a subsequent software request

 SYNOPSIS

     #include <sys/eisa.h>

     void eisa_dma_prog(vint_t adap, struct eisa_dma_cb *dmacbptr, int chan, uchar_t mode);

   Arguments
     adap Bus adapter number (zero on an Indigo2).

     dmacbptr
          Pointer to the DMA command block specifying the DMA operation.

     chan Channel over which the DMA operation is to take place.

     mode Specifies whether the caller is willing to sleep waiting for to
          allocate the desired DMA channel. If mode is set to
          EISA_DMA_NOSLEEP, then the caller will sleep if necessary until the
          requested channel becomes available for its use. If mode is set to
          EISA_DMA_SLEEP, then the caller will not sleep, but eisa_dma_prog
          will return FALSE if the requested DMA channel is not immediately
          available.

 DESCRIPTION

     The eisa_dma_prog routine programs the DMA channel chan for the operation
     specified by the DMA command block whose address is given by dmacbptr.
     Note that eisa_dma_prog does not initiate the DMA transfer. Instead, the
     transfer will be initiated by a subsequent request initiated by
     eisa_dma_swstart() or eisa_dma_enable().

     To program the operation, eisa_dma_prog requires exclusive use of the
     specified DMA channel. The caller may specify, via the mode argument,
     whether eisa_dma_prog should sleep waiting for a busy channel to become
     available. If the specified channel is in use and mode is set to
     EISA_DMA_SLEEP, then eisa_dma_prog will sleep until the channel becomes
     available for its use. Otherwise, if EISA_DMA_NOSLEEP is specified and
     the requested channel is not immediately available, eisa_dma_prog will
     not program the channel, but will simply return a value of FALSE.

   Return Values
     eisa_dma_prog returns the value TRUE on success and FALSE otherwise.

   Level
     Base only if either mode is set to EISA_DMA_SLEEP.

   Notes
     Can sleep if mode is set to DMA_SLEEP or the routine specified by the
     proc field of the eisa_dma_cb structure sleeps.




home/search | what's new | help