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

From: Olivier Guilyardi <ml@email-addr-hidden>
Date: Fri Oct 17 2008 - 18:16:33 EEST

Kjetil S. Matheussen wrote:
>
> BTW, non of the machines I tested on had the sched_getcpu function, so I
> added "#define sched_getcpu getpid" to the file.

Ok. In Debian this is in libc6-dev (utmpx.h). The purpose of calling
sched_getcpu is to check whether the reader and writer threads are running on a
different cpu or not.

> Machine 1: 8 X (core Intel(R) Xeon(R) CPU E5320 @ 1.86GHz)
> === Jack ringbuffer test ===
> 60288 != 60160 at offset 0
> failure in chunk 373678
> Rest was success
>
> Machine 2: 1 X (AMD Sempron(TM) 3000+)
> Success Success Success
>
> Machine 3: 3 X (Intel(R) Xeon(TM) CPU 2.80GHz)
> === Jack ringbuffer test ===
> 16640 != 16512 at offset 0
> failure in chunk 2300164
> Rest was success

AFAICS your only single-cpu system passes the test. SMP fail.

> -------------------
> Machine 4: SunOs 5.8 sun4u sparc SUNW,Ultra-4 Solaris
> :-)
>
> The jack test compiled fine.
>
> Portaudio version:
> "portaudio/pa_ringbuffer.c", line 121: #error: Memory barriers are not
> defined on this system. You can still compile by defining
> ALLOW_SMP_DANGERS, but SMP s
>
> Also:
> $ ./test-int-array-jack
> starting ringbuffer stress test (2 minutes max)
> Segmentation Fault

Ok, Try this:
make test-int-array-jack
make test-int-array-portaudio-nobarrier
./test-int-array-jack 512
./test-int-array-portaudio-nobarrier 512

I'm curious to see whether Portaudio's ringbuffer fail when it has no memory
barrier, on non-x86/unusual architectures.

-- 
  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 Fri Oct 17 20:15:05 2008

This archive was generated by hypermail 2.1.8 : Fri Oct 17 2008 - 20:15:06 EEST