[ovs-dev] [urcu v2 00/15] implement userspace RCU and add a few simple users
Ben Pfaff
blp at nicira.com
Tue Mar 11 20:56:02 UTC 2014
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
More information about the dev
mailing list