[LAU] Simple, easy multithreaded circular buffer library for Linux?

Paul Davis paul at linuxaudiosystems.com
Sat Oct 18 16:56:31 EDT 2008


On Sat, 2008-10-18 at 20:44 +0200, Fons Adriaensen wrote:

> It doesn't matter how many times it is read, but it
> does matter if it is ever written with a wrong value.
> And this *did* happen in the old version at the end of
> a read:
> 
>    rb->read_ptr += n1;
>    rb->read_ptr &= rb->size_mask;

> If a context switch occurs after the first statement,
> and read_ptr > size (which can happen), then the writer
> would believe there is more space to write than there
> actually is.

if read_ptr > size then the math should result in the write space being
*under* estimated. if thats not happening then my worst nightmares come
true, which has happened before. is there a signed/unsigned issue going
on here?





More information about the Linux-audio-user mailing list