urcu:tests/lfqueue-baseline

Last commit made on 2011-09-05
Get this branch:
git clone -b tests/lfqueue-baseline https://git.launchpad.net/urcu

Branch merges

Branch information

Name:
tests/lfqueue-baseline
Repository:
lp:urcu

Recent commits

5636a72... by Mathieu Desnoyers on 2011-09-05

Fix typo in makefile

Signed-off-by: Mathieu Desnoyers <email address hidden>

b240d45... by Mathieu Desnoyers on 2011-09-05

Merge branch 'master' into tests/lfqueue-baseline

7865436... by Mathieu Desnoyers on 2011-09-05

Revert "Add cds_list_empty"

This reverts commit 4b7cab77f3c1c03f021cb0f7e8d150eed3f948e9.

(did duplicate cds_list_empty)

Signed-off-by: Mathieu Desnoyers <email address hidden>

4b7cab7... by Mathieu Desnoyers on 2011-09-05

Add cds_list_empty

Signed-off-by: Mathieu Desnoyers <email address hidden>

58090b3... by Mathieu Desnoyers on 2011-09-04

list: Add cds_list_first_entry

Signed-off-by: Mathieu Desnoyers <email address hidden>

ae4510b... by Mathieu Desnoyers on 2011-09-03

rculfstack/queue: define _LGPL_SOURCE around static header include

... so the urcu-pointer header takes the LGPL version of rcu_dereference
and friends.

Signed-off-by: Mathieu Desnoyers <email address hidden>

4157e1a... by Mathieu Desnoyers on 2011-09-03

Revert "Create per RCU flavor CDS libraries"

This reverts commit d4b99c015229978810319cfd42e1c9763772fad8.

Minor change (not visible to end-users): this commit introduces a
liburcu-common.so to hold wfqueue, wfstack and futex fall-back code.
This .so is used by all URCU flavors, as well as liburcu-cds.so.

Signed-off-by: Mathieu Desnoyers <email address hidden>

6e5f88c... by Mathieu Desnoyers on 2011-09-03

Revert "CDS API: removal of rcu_read lock/unlock dep, removal of call_rcu argument from init"

This reverts commit 7618919ae496bda84a2efa4f2ad0abe569892a9e.

Rationale:

I thought about it some more, and had discussions with various people,
and there are a few reasons to go for a scheme where rcu read lock
should be taken by the caller, and to pass call_rcu as a parameter to
the data structure init function:

A) The advantage, as Paul E. McKenney pointed out, is that one single .so
   is enough to support all RCU flavors. Very convenient for external data
   structure containers.

B) It clearly documents where rcu read-side locks are needed, so the user
   keep control and in-depth understanding of their read-side locks.

C) When multiple API functions that require RCU read-side lock to be
   held (sometimes even the same lock) throughout a sequence of API
   calls, we have no choice but to let the caller hold the read-side
   lock.

D) Due to support of multiple nesting of rcu read-side lock, any
   "improvement" we could get by releasing the read-side lock in
   retry loops would vanish in the cases where we are called within
   nested C.S..

E) If a library uses synchronize_rcu, this should be clearly documented,
   and even frowned upon, because this involves important limitations on
   the design of the caller, and important performance hit. There are
   usually ways to reach the same result through use of call_rcu, which
   should really be used thoroughout these libraries.

F) It clearly documents when a data structure needs to use call_rcu
   internally.

G) Some very early benchmark results show that there is indeed not
   much performance gain to achieve by inlining call_rcu, even if it is
   a version with a cache for the "call_rcu structure" lookup
   (per-cpu/per-thread/global). So passing it as a parameter to
   the data structure init function should be fine, even in cases
   where it is called very often.

H) For use-cases where applications would like to use more than one
   RCU flavor concurrently (which is now supported), leaving management
   of RCU read-side C.S. to the reader allows the application to take
   more than one RCU read-side lock across API calls. It also lets the
   application specify its own call_rcu function that could handle more
   than one RCU flavor.

So for all these reasons, I reverting back to the API we have in our
last release (0.6.4).

Signed-off-by: Mathieu Desnoyers <email address hidden>

dc53e23... by Mathieu Desnoyers on 2011-09-03

Add __rcu annotation (unimplemented)

Signed-off-by: Mathieu Desnoyers <email address hidden>

a00718e... by Mathieu Desnoyers on 2011-09-01

Fix incorrect fsf address in header files

Signed-off-by: Mathieu Desnoyers <email address hidden>