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

From: Olivier Guilyardi <ml@email-addr-hidden>
Date: Fri Oct 17 2008 - 20:45:46 EEST

Paul Coccoli wrote:
> On Fri, Oct 17, 2008 at 1:20 PM, Olivier Guilyardi <ml@email-addr-hidden> wrote:
>> Paul Coccoli wrote:
>>>
>>> rb->read_ptr += n1;
>>> rb->read_ptr &= rb->size_mask;
>>>
>>> Looks like a problem to me. What happens if there's a context switch
>>> in between those 2 statements?
>>>
>> Well, it looks like you had a fast but great insight here. I've turned all
>> statements of this kind into one-liners, and the jack ringbuffer now
>> (apparently) passes the test.
>
> Looks like I don't have to "step back" or "read the whole thread for
> links to relevant documents" then ;)

No that's right, you just stepped forward ;)

>> Here's the patch against jack1 r3007:
>> http://svn.samalyse.com/misc/rbtest/patches/jack-r3007-rb-fix.diff
>>
>> And thanks everyone for the tests ! I've updated the test suite, it now contains
>> an additional test with this patch. Please continue testing :)
>>
>
> I didn't test your patch, but my own patch (which is the same thing)
> works on dual Core2 duo system, whereas the original didn't.
>
> No memory barriers needed *on x86* (volatile isn't needed anywhere).
> Others system probably need memory barriers.

Indeed, from what I read, PowerPC might need them. Could anyone run these tests
on a PowerPC, ideally SMP?

Btw, do you think there's a need to write more elaborated tests, something like
writing/reading data chunks of random sizes for example ?

-- 
  Olivier Guilyardi / Samalyse
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user
Received on Sat Oct 18 00:15:02 2008

This archive was generated by hypermail 2.1.8 : Sat Oct 18 2008 - 00:15:03 EEST