Bug#406754: Bug #406754: portaudio19: FTBFS: #error Memory barriers are not defined on this system.

Mikael Magnusson mikma at users.sourceforge.net
Mon Jan 29 11:32:47 CET 2007


Falk Hueffner wrote:
> Hi,
> 
> the correct solution is to use __sync_synchronize as fallback, which
> is a full memory barrier defined by gcc (starting from 4.1) for all
> platforms. It is also desirable to use this on all platforms that
> don't differentiate read/write/full barriers, since it gives the
> compiler better opportunities to optimize.
> 

Do you have a patch? I tried to use __sync_synchronize on i386, but it 
doesn't generate any synchronization code in the assembler output.

Mikael

--- old-working/src/common/pa_ringbuffer.c      2007-01-29 
11:27:55.000000000 +0100
+++ new-working/src/common/pa_ringbuffer.c      2007-01-29 
11:27:55.000000000 +0100
@@ -86,9 +86,9 @@
  #      define PaUtil_ReadMemoryBarrier()  asm volatile("sync":::"memory")
  #      define PaUtil_WriteMemoryBarrier() asm volatile("sync":::"memory")
  #   elif defined( __i386__ ) || defined( __i486__ ) || defined( 
__i586__ ) || defined( __i686__ )
-#      define PaUtil_FullMemoryBarrier()  asm volatile("mfence":::"memory")
-#      define PaUtil_ReadMemoryBarrier()  asm volatile("lfence":::"memory")
-#      define PaUtil_WriteMemoryBarrier() asm volatile("sfence":::"memory")
+#      define PaUtil_FullMemoryBarrier()  __sync_synchronize
+#      define PaUtil_ReadMemoryBarrier()  __sync_synchronize
+#      define PaUtil_WriteMemoryBarrier() __sync_synchronize
  #   else
  #      ifdef ALLOW_SMP_DANGERS
  #         warning Memory barriers not defined on this system or system 
unknown





More information about the Pkg-voip-maintainers mailing list