> On Sun, 2002-09-29 at 20:51, Jaroslav Kysela wrote:
> > + sgbuf = snd_magic_cast(snd_pcm_sgbuf_t, substream->dma_private, return -EINVAL);
>
> hummmm magic casts?? why ?
We are trying to check if 'void *' pointers in structures are used
correctly. It's our tool for debugging.
> > + ptr = snd_malloc_pci_pages(sgbuf->pci, PAGE_SIZE, &addr);
>
> what is wrong with the PCI DMA API that makes ALSA wants a private
> interface/implementation ?
These lines (i386 arch):
if (hwdev == NULL || ((u32)hwdev->dma_mask != 0xffffffff))
gfp |= GFP_DMA;
ret = (void *)__get_free_pages(gfp, get_order(size));
Note that some of soundcards have various PCI DMA transfer limits
(dma_mask is not set to use full 32-bits). In this case, restricting this
hardware to allocate these buffers in first 16MB is not a very good idea.
Thus, we have own hacks to allocate memory in whole hardware area.
> > EXPORT_SYMBOL(snd_wrapper_kmalloc);
> > EXPORT_SYMBOL(snd_wrapper_kfree);
> > +EXPORT_SYMBOL(snd_wrapper_vmalloc);
> > +EXPORT_SYMBOL(snd_wrapper_vfree);
>
> why do you need a wrapper for vfree?
Debugging. We enumerate all allocations, so we can check for memory leaks.
I'm happy to say, that our code is very well debugged in this regard.
Jaroslav
-----
Jaroslav Kysela <perex@suse.cz>
Linux Kernel Sound Maintainer
ALSA Project http://www.alsa-project.org
SuSE Linux http://www.suse.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/