Module: libav
Branch: master
Commit: e460aa3282962aa3e89f19e207ec13b501187949

Author:    Martin Storsjö <[email protected]>
Committer: Martin Storsjö <[email protected]>
Date:      Fri Mar  8 12:32:38 2013 +0200

atomic: Check for __sync_val_compare_and_swap instead of __sync_synchronize

Not all gcc configurations have an implementation of all the atomic
operations, and some gcc configurations have some atomic builtins
implemented but not all.

Thus check for the most essential function, whose presence should
indicate that all others are present as well, since it can be used
to implement all the other ones.

Signed-off-by: Martin Storsjö <[email protected]>

---

 configure          |    4 ++--
 libavutil/atomic.c |    4 ++--
 libavutil/atomic.h |    2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/configure b/configure
index a4b12c6..01bfbb1 100755
--- a/configure
+++ b/configure
@@ -1324,7 +1324,7 @@ HAVE_LIST="
     struct_v4l2_frmivalenum_discrete
     symver_asm_label
     symver_gnu_asm
-    sync_synchronize
+    sync_val_compare_and_swap
     sysconf
     sysctl
     sys_mman_h
@@ -3456,7 +3456,7 @@ check_func  strerror_r
 check_func  strptime
 check_func  strtok_r
 check_func  sched_getaffinity
-check_builtin sync_synchronize "" "__sync_synchronize()"
+check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; 
__sync_val_compare_and_swap(ptr, oldval, newval)"
 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
 check_func  sysconf
diff --git a/libavutil/atomic.c b/libavutil/atomic.c
index 8fa2532..37e796f 100644
--- a/libavutil/atomic.c
+++ b/libavutil/atomic.c
@@ -20,7 +20,7 @@
 
 #include "atomic.h"
 
-#if !HAVE_MEMORYBARRIER && !HAVE_SYNC_SYNCHRONIZE && !HAVE_MACHINE_RW_BARRIER
+#if !HAVE_MEMORYBARRIER && !HAVE_SYNC_VAL_COMPARE_AND_SWAP && 
!HAVE_MACHINE_RW_BARRIER
 
 #if HAVE_PTHREADS
 
@@ -102,7 +102,7 @@ void *avpriv_atomic_ptr_cas(void * volatile *ptr, void 
*oldval, void *newval)
 
 #endif /* HAVE_PTHREADS */
 
-#endif /* !HAVE_MEMORYBARRIER && !HAVE_SYNC_SYNCHRONIZE && 
!HAVE_MACHINE_RW_BARRIER */
+#endif /* !HAVE_MEMORYBARRIER && !HAVE_SYNC_VAL_COMPARE_AND_SWAP && 
!HAVE_MACHINE_RW_BARRIER */
 
 #ifdef TEST
 #include <assert.h>
diff --git a/libavutil/atomic.h b/libavutil/atomic.h
index dad93bd..577e471 100644
--- a/libavutil/atomic.h
+++ b/libavutil/atomic.h
@@ -25,7 +25,7 @@
 
 #if HAVE_MEMORYBARRIER
 #include "atomic_win32.h"
-#elif HAVE_SYNC_SYNCHRONIZE
+#elif HAVE_SYNC_VAL_COMPARE_AND_SWAP
 #include "atomic_gcc.h"
 #elif HAVE_MACHINE_RW_BARRIER
 #include "atomic_suncc.h"

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to