Our supported XenServer build environments lack proper atomic libraries, which makes recent OVS techiques (ovs-rcu, cmap) painfully slow. This series adds native atomic implementations for i586 and x86_64 when compiled with GCC. This makes the atomic operations on older GCC versions as fast as on newer versions.
Jarno Rajahalme (7): Fix strict aliasing violations with GCC 4.1 and 4.4. lib/ovs-atomic: Elaborate memory_order documentation. lib/ovs-atomic: Require memory_order be constant. lib/ovs-atomic-gcc4+: Use 'volatile' to enforce memory access. tests/test-atomic: Cover more of the atomic API. lib/ovs-atomic: Native support for x86_64 with GCC. lib/ovs-atomic: Native support for 32-bit 586 with GCC. lib/automake.mk | 2 + lib/cmap.c | 18 +- lib/ovs-atomic-gcc4+.h | 14 +- lib/ovs-atomic-i586.h | 452 +++++++++++++++++++++++++++++++++++++++++ lib/ovs-atomic-x86_64.h | 345 +++++++++++++++++++++++++++++++ lib/ovs-atomic.h | 54 ++++- lib/ovs-rcu.h | 57 ++++-- ofproto/connmgr.c | 12 +- ofproto/ofproto-dpif-sflow.c | 12 +- ofproto/ofproto-dpif-upcall.c | 7 +- tests/test-atomic.c | 291 +++++++++++++++++++++++++- vswitchd/bridge.c | 11 +- 12 files changed, 1221 insertions(+), 54 deletions(-) create mode 100644 lib/ovs-atomic-i586.h create mode 100644 lib/ovs-atomic-x86_64.h -- 1.7.10.4 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
