summaryrefslogtreecommitdiffstats
path: root/m4/ax_c___atomic.m4
diff options
context:
space:
mode:
authorCosta Tsaousis (ktsaou) <costa@tsaousis.gr>2017-07-02 15:18:46 +0300
committerCosta Tsaousis (ktsaou) <costa@tsaousis.gr>2017-07-02 15:18:46 +0300
commit2d7028c2ab7be6da3862718e39fd8f4c9e9d6259 (patch)
tree65df131cf73f71970f43e988120b8f80d588697e /m4/ax_c___atomic.m4
parent5dc336119bc9c5b3f5b04e48795a3697ddc27418 (diff)
database flags are now using atomic operations when available
Diffstat (limited to 'm4/ax_c___atomic.m4')
-rw-r--r--m4/ax_c___atomic.m46
1 files changed, 6 insertions, 0 deletions
diff --git a/m4/ax_c___atomic.m4 b/m4/ax_c___atomic.m4
index 131929ae18..dd5ee3d1cb 100644
--- a/m4/ax_c___atomic.m4
+++ b/m4/ax_c___atomic.m4
@@ -10,13 +10,19 @@ AC_DEFUN([AC_C___ATOMIC],
main (int argc, char **argv)
{
volatile unsigned long ul1 = 1, ul2 = 0, ul3 = 2;
+ __atomic_load_n(&ul1, __ATOMIC_SEQ_CST);
__atomic_compare_exchange(&ul1, &ul2, &ul3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
__atomic_fetch_add(&ul1, 1, __ATOMIC_SEQ_CST);
__atomic_fetch_sub(&ul3, 1, __ATOMIC_SEQ_CST);
+ __atomic_or_fetch(&ul1, ul2, __ATOMIC_SEQ_CST);
+ __atomic_and_fetch(&ul1, ul2, __ATOMIC_SEQ_CST);
volatile unsigned long long ull1 = 1, ull2 = 0, ull3 = 2;
+ __atomic_load_n(&ull1, __ATOMIC_SEQ_CST);
__atomic_compare_exchange(&ull1, &ull2, &ull3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
__atomic_fetch_add(&ull1, 1, __ATOMIC_SEQ_CST);
__atomic_fetch_sub(&ull3, 1, __ATOMIC_SEQ_CST);
+ __atomic_or_fetch(&ull1, ull2, __ATOMIC_SEQ_CST);
+ __atomic_and_fetch(&ull1, ull2, __ATOMIC_SEQ_CST);
return 0;
}
]])],