[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