[ltt-dev] [PATCH 00/10] call_rcu: futex wakeup and miscellaneous improvements

Paolo Bonzini pbonzini at redhat.com
Wed Jun 8 04:59:08 EDT 2011


this series redoes the futex implementation so that it does not busily
wait for the list to be filled.

I'm reusing the flags field as the futex variable, so I'm at the same
time converting it from mutex-protected to atomic (patch 5) and adding
more atomic operations to the uatomic library (patches 3, 4, 6).

Patches 1 and 2 are unrelated bugfixes.  Patch 7 is a simple
cleanup in the call_rcu areas that I was touching anyway.

Patch 8 is the actual futex implementation, with patches 9 and 10 further
optimizing the readers to avoid system calls when a call_rcu is already
scheduled; I separated them to simplify bisection in case things go wrong.

Paolo Bonzini (10):
  urcu-qsbr: fix typo
  rcutorture: make goflag volatile
  uatomic: fix typo in x86 compat implementation
  uatomic: add uatomic_or
  call_rcu: drop mutex
  uatomic: add uatomic_and
  call_rcu: remove write-only qlen variable
  call_rcu: redo futex implementation
  call_rcu: factor polling from RT and non-RT cases
  call_rcu: avoid useless futex wakeups

 compat_arch_x86.c       |   50 ++++++++++++
 tests/rcutorture.h      |    3 +-
 tests/test_uatomic.c    |    8 ++-
 urcu-call-rcu-impl.h    |   84 +++++++++------------
 urcu-call-rcu.h         |    1 +
 urcu-qsbr.h             |    2 +-
 urcu/uatomic_arch_x86.h |  130 +++++++++++++++++++++++++++++++-
 urcu/uatomic_generic.h  |  194 +++++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 418 insertions(+), 54 deletions(-)


More information about the lttng-dev mailing list