Re: [LAD] a *simple* ring buffer, comments pls?

From: Fons Adriaensen <fons@email-addr-hidden>
Date: Sat Jul 09 2011 - 00:11:11 EEST

On Fri, Jul 08, 2011 at 10:59:14PM +0200, Arnold Krille wrote:

> Empty for reading. Lots of space for writing.
> Its much more interesting to see what happens when the indezes cross the 2^32
> or 2^64 mark, then the write-index will be smaller then the read-index untill
> the read-index catches up. But as far as I see currently, this wouldn't be a
> problem either. The writer only has to stop writing when its at read_ptr - 1.

It is assumed that the buffer is used correctly, so no one does e.g
a wr_commit(n) with n > wr_avail(), same for read. There is no
problem with wraparound at 2^32 or 2^64 if size is a power of 2.
 
> Maybe I don't understand it all, but with fons approach I think it only works
> when the buffer-sizes are 2^n. When you have a buffer of say 5 elements, doing
> the modulo at the element-access and not at the read/write-head-movement, this
> will jump every now and then, right?

It works only if the size is a divider of the int size, so
it must be a power of 2. But that is the case for Jack's
implementation as well (or anything that uses 'n & (size-1)'
instead of 'n % size'.

Ciao,

-- 
FA
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Sat Jul 9 00:15:05 2011

This archive was generated by hypermail 2.1.8 : Sat Jul 09 2011 - 00:15:05 EEST