On Sun, 21.02.10 12:06, Kai Vehmanen (kvehmanen@eca.cx) wrote:
Hi,
On Thu, 11 Feb 2010, Jaroslav Kysela wrote:
However, PA ignores the sound card's interrupts and is woken up by its own timer.
PA can drive the wake-ups using avail_min sw parameter. If this value is high enough, no userspace wake up is called, only interrupt is processed and internal ring buffer pointers in the driver are updated.
but that's unfortunately not enough. AFAIK glitch-free aims, among other things, to minimize power usage for battery powered devices, and to do that, you need to minimize hardware interrupts [1]. And for that, avail_min won't help.
[1] this is exactly the same thing that is driving Linux tickless development: http://www.lesswatts.org/projects/tickless/
PS I do agree that avail_min is a very useful, and often overlooked feature, of ALSA. But in this specific case it won't help...
We try our best to minimize wakeups by setting the minimal number of periods in PA. Unfortunately that still means one gets 2 or 1 irqs per buffer iteration.
However even if we get those two wakeups, using avail_min allows us to minimize the number of processes that are woken up on that IRQ. i.e. if the CPU is woken up, it is still better when this only means some IRQ in the kernel is processed, then passing it into userspace.
Lennart