Re: hw_params function and OSS emulation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Takashi Iwai wrote:
> At Thu, 23 Aug 2007 13:43:40 -0500,
> Timur Tabi wrote:
>> Takashi Iwai wrote:
>>
>>> Err, usually, application = user-space application.  Do you mean
>>> really this?
>> Yes.  The application allocates a buffer, locks it down, and passes it to the 
>> kernel.  Since the buffer was allocated in user space, it is virtual 
>> contiguous but not physically contiguous, hence the need for a list of 
>> physical addresses.  To the hardware, the buffer appears as a collection of 
>> scattered buffers.  Hence, scatter/gather.
> 
> Hm, then it must be a really special application.  I've never seen
> linux audio apps doing such things...

That could be.  I'm using a generic definition of S/G.  Perhaps I should read 
the ALSA API before posting further. :-)

> The problem in your scenario is that the buffers allocated from
> user-space are not always DMA-able for devices, thus not always usable
> for the hardware.

It's possible for an application to allocate DMA-able memory.  I think you 
need to allocate it normally than use mlock() on it, but it's been a while so 
I'm not sure.

> The ALSA SG-buffer helper is simply to allocate individual pages and
> gather as a virtually linear buffer.  From the user-space, it's
> nothing but a normal linear buffer.

So what is the value of having the driver allocate a physically discontiguous 
buffer when it can easily allocate a contiguous one?  Are there systems where 
allocating a 32KB physically-contiguous buffer is too hard?

-- 
Timur Tabi
Linux Kernel Developer @ Freescale
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux