Vmalloc'ed Buffers
Prev | Chapter 11. Buffer and Memory Management | Next

## Vmalloc'ed Buffers

It's possible to use a buffer allocated via `vmalloc`, for example, for an intermediate buffer. Since the allocated pages are not contiguous, you need to set the `page` callback to obtain the physical address at every offset.

The implementation of `page` callback would be like this:

      #include <linux/vmalloc.h>

      /* get the physical page pointer on the given offset */
      static struct page *mychip_page(struct snd_pcm_substream *substream,
                                      unsigned long offset)
      {
              void *pageptr = substream->runtime->dma_area + offset;
              return vmalloc_to_page(pageptr);
      }

Prev | Up | Next
Non-Contiguous Buffers | Home | Chapter 12. Proc Interface