Paul Davis wrote:
On Wed, 2008-10-15 at 13:02 +0200, Olivier Guilyardi
wrote:
I'm no memory barrier expert, but from what I read this looks like a complex
topic. Adding them to jack's ring buffer may be hazardous without carefully
crafted test cases. Bugs related to missing barriers may or may not happen
according to various hardware-related issues.
the point of memory barriers is really to remove the need for test
cases :)
I meant Test First, not putting a memory barrier between us and past bugs ;)
My concern is: people around say memory barriers are missing, but could anyone
write a unit test that actually turns this assumption into a bug?
Here's
what Ross Bencina says about it: "the correct implementation of these
algorithms also requires an understanding of the use of memory barriers to force
the order of some memory reads and writes on SMP systems. This is because memory
controllers may reorder reads and writes as observed by other processors on an
SMP system (or by prehipherals on a uniprocessor system)."
what is complex about memory barriers is understanding *why* they are
necessary. their use is really quite straightforward.
Yeah, I saw that. In Portaudio, they consist in 3 lines in the whole ringbuffer
code. But as Miles Davis (sort of) said, playing a few notes might involve a
great expertise.
As a user of
these projects I sense that people from Portaudio, PulseAudio and
Jack could collaborate on this topic. And Ross Bencina's initiative may be the
right place for this:
http://www.audiomulch.com/~rossb/code/lockfree/liblfds/index.htm
if you read that page carefully you will see that ross was still waiting
to set up a repository when that page was last updated (2006). a shame.
though i can speak, did i do anything to help it out?
I didn't see that the page was so old.. I just saw there was "some" activity
on
the mailing list (
http://tech.groups.yahoo.com/group/liblf-dev/).
I'll try to find some time to work on a patch or a new lib, but I can't promise
it will happen soon.
PS: I forwarded this thread to Ross
--
Olivier Guilyardi / Samalyse