+#define CACHE_LINE_SIZE 128
+#define mb()    __sync_synchronize()

These are provided by arch_generic.h, aren't they?

In particular, CACHE_LINE_SIZE should be updated there from 64
to 128 if we deem that value to be better.

diff --git a/urcu/uatomic_arch_gcc.h b/urcu/uatomic_arch_gcc.h
new file mode 100644
index 0000000..df208bd
--- /dev/null
+++ b/urcu/uatomic_arch_gcc.h
@@ -0,0 +1,48 @@
+/* xchg */
+#define uatomic_xchg(addr, v) __sync_lock_test_and_set(addr, v)

__sync_lock_test_and_set may only support v==1, and is only
an acquire barrier, so I think it's better to just use the
definition in uatomic_arch_generic.h.

+/* cmpxchg */
+#define uatomic_cmpxchg(addr, old, _new) \
+       __sync_val_compare_and_swap(addr, old, _new)
+
+/* uatomic_add_return */
+#define uatomic_add_return(addr, v) __sync_add_and_fetch(addr, v)

These are also provided by uatomic_arch_generic.h.

Paolo

_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev

Reply via email to