Provided by: linux-doc-2.6.15_2.6.15-23.39_all bug

NAME

       usb_buffer_alloc     -     allocate     dma-consistent    buffer    for
       URB_NO_xxx_DMA_MAP

SYNOPSIS

       void * usb_buffer_alloc  (struct usb_device * dev, size_t size,
                                   gfp_t mem_flags, dma_addr_t * dma);

ARGUMENTS

       dev    device the buffer will be used with

       size   requested buffer size

       mem_flags
              affect whether allocation may block

       dma    used to return DMA address of buffer

DESCRIPTION

       Return  value is either null (indicating no buffer could be allocated),
       or the cpu-space pointer to a buffer that may be used to perform DMA to
       the  specified  device.  Such cpu-space buffers are returned along with
       the DMA address (through the pointer provided).

       These   buffers   are   used    with    URB_NO_xxx_DMA_MAP    set    in
       urb->transfer_flags   to   avoid  behaviors  like  using  ‘‘DMA  bounce
       buffers’’, or tying down I/O mapping hardware for  long  idle  periods.
       The  implementation  varies  between platforms, depending on details of
       how DMA will work to  this  device.  Using  these  buffers  also  helps
       prevent  cacheline  sharing  problems on architectures where CPU caches
       are not DMA-coherent.

       When the buffer is no longer used, free it with usb_buffer_free.