Messages in this thread | | | Date | Sun, 29 Sep 2002 21:28:48 +0200 (CEST) | From | Jaroslav Kysela <> | Subject | Re: [PATCH] ALSA update [6/10] - 2002/07/20 |
| |
On 29 Sep 2002, Arjan van de Ven wrote:
> 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/
| |