Hi, 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(-) -- 1.7.4.4 _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
