summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJani Monoses <jani.monoses@canonical.com>2011-03-14 19:10:04 +0100
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-03-14 19:11:00 +0100
commit2199a47a3fdb624c93d222de9b72bef8edee6993 (patch)
treefadee9cdf2ac6a9ba4d8ac6012cc515ecf204889
parenta7840842f1734dcbd5f7f2dca2de27cc0462958c (diff)
prefer gcc __sync functions over pthread
Signed-off-by: Bjoern Michaelsen <bjoern.michaelsen@canonical.com>
-rw-r--r--sal/osl/unx/interlck.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sal/osl/unx/interlck.c b/sal/osl/unx/interlck.c
index f164371a7..184cb5fee 100644
--- a/sal/osl/unx/interlck.c
+++ b/sal/osl/unx/interlck.c
@@ -134,7 +134,16 @@ oslInterlockedCount SAL_CALL osl_decrementInterlockedCount(oslInterlockedCount*
return nCount;
}
+#elif ( __GNUC__ > 4 ) || (( __GNUC__ == 4) && ( __GNUC_MINOR__ >= 4 ))
+oslInterlockedCount SAL_CALL osl_incrementInterlockedCount(oslInterlockedCount* pCount)
+{
+ return __sync_add_and_fetch(pCount, 1);
+}
+oslInterlockedCount SAL_CALL osl_decrementInterlockedCount(oslInterlockedCount* pCount)
+{
+ return __sync_sub_and_fetch(pCount, 1);
+}
#else
/* use only if nothing else works, expensive due to single mutex for all reference counts */