v1->v2: Redid all the ovs-atomic changes to fix a bug in the GCC 4.x (x < 7) support. This was not a simple fix; all the ovs-atomic patches are essentially new. Also, changed the ovs-rcu library to use "consume" rather than "acquire" based on this: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1525.htm
Ben Pfaff (15): ovs-atomic-gcc4+: Fix parenthesization in atomic_read_explicit(). compiler: New macro for defining aligned structs. util: New macro PAD_SIZE. util: Move CACHE_LINE_SIZE here. ovs-atomic: Factor type declarations out of most implementations. ovs-atomic: Use raw types, not structs, when locks are required. ovs-atomic-pthreads: Use global shared locks for atomic_flag also. ovs-atomic-types: Move into ovs-atomic.h. ovs-atomic: Delete atomic, atomic_flag, ovs_refcount destroy functions. ovs-rcu: New library. ofproto: Use RCU to protect rule_actions. util: New functions for allocating memory while avoiding false sharing. ovs-thread: Replace ovsthread_counter by more general ovsthread_stats. dpif-netdev: Use ovsthread_stats for flow stats. dpif-netdev: Use RCU to protect data. lib/automake.mk | 6 +- lib/bfd.c | 3 +- lib/cfm.c | 6 +- lib/compiler.h | 16 ++- lib/dpif-linux.c | 3 +- lib/dpif-netdev.c | 299 ++++++++++++++++++++++------------------- lib/fat-rwlock.c | 34 +---- lib/lacp.c | 3 +- lib/mac-learning.c | 3 +- lib/netdev.c | 1 - lib/netlink-socket.c | 1 - lib/netlink.c | 6 +- lib/nx-match.c | 10 +- lib/ofp-actions.c | 6 +- lib/ofp-actions.h | 2 +- lib/ovs-atomic-c11.h | 26 +--- lib/ovs-atomic-clang.h | 42 +----- lib/ovs-atomic-flag-gcc4.7+.h | 14 +- lib/ovs-atomic-gcc4+.c | 68 ---------- lib/ovs-atomic-gcc4+.h | 210 +++++++---------------------- lib/ovs-atomic-gcc4.7+.h | 44 +----- lib/ovs-atomic-locked.c | 58 ++++++++ lib/ovs-atomic-locked.h | 32 +++++ lib/ovs-atomic-pthreads.c | 78 ----------- lib/ovs-atomic-pthreads.h | 151 +++++++++------------ lib/ovs-atomic.h | 80 ++++++----- lib/ovs-rcu.c | 293 ++++++++++++++++++++++++++++++++++++++++ lib/ovs-rcu.h | 170 +++++++++++++++++++++++ lib/ovs-thread.c | 107 +++++++-------- lib/ovs-thread.h | 25 +++- lib/stp.c | 3 +- lib/timeval.c | 11 ++ lib/util.c | 60 ++++++++- lib/util.h | 14 +- ofproto/bond.c | 3 +- ofproto/connmgr.c | 5 +- ofproto/netflow.c | 3 +- ofproto/ofproto-dpif-ipfix.c | 3 +- ofproto/ofproto-dpif-sflow.c | 1 - ofproto/ofproto-dpif-upcall.c | 8 +- ofproto/ofproto-dpif-xlate.c | 2 - ofproto/ofproto-dpif.c | 2 - ofproto/ofproto-provider.h | 19 ++- ofproto/ofproto.c | 122 +++++++---------- tests/test-atomic.c | 4 +- 45 files changed, 1143 insertions(+), 914 deletions(-) delete mode 100644 lib/ovs-atomic-gcc4+.c create mode 100644 lib/ovs-atomic-locked.c create mode 100644 lib/ovs-atomic-locked.h delete mode 100644 lib/ovs-atomic-pthreads.c create mode 100644 lib/ovs-rcu.c create mode 100644 lib/ovs-rcu.h -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev