Mathieu Desnoyers [Tue, 7 Jun 2011 04:25:22 +0000 (00:25 -0400)]
Merge remote branch 'origin/master' into rbtree2
Mathieu Desnoyers [Tue, 7 Jun 2011 04:16:00 +0000 (00:16 -0400)]
call_rcu: use futex for wakeup scheme
If I remove the URCU_CALL_RCU_RT flag from the rbtree single writer
test, thus using the pthread_cond_signal mechanism, there is a huge
slowdown: without cpu affinity for the worker threads, it crawls to 129
updates/s (looks like mutex contention between the thread calling
call_rcu and the call_rcu thread). Adding CPU affinity to the per-cpu
call_rcu threads, I get 546 updates/s, which is slightly better (better
cache locality, and maybe the mutex contention is not as bad thanks to
the two threads sharing the same CPU).
So I decided to try replacing pthread_cond_wait/signal with my
futex-based implementation I use for the rest of the urcu lib: it has
the advantage of removing the mutex from the call_rcu() execution
entirely, sampling the "futex" variable without any mutex whatsoever for
the case where no wakeup is needed.
Disabling URCU_CALL_RCU_RT flag, with per-cpu affined call_rcu threads,
with my futex-based wakeup implementation, I get 55754 updates/s (even
better than with URCU_CALL_RCU_RT flag!).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 6 Jun 2011 21:24:42 +0000 (17:24 -0400)]
call_rcu: use cpu affinity for per-cpu call_rcu threads
I played a bit with the call_rcu() implementation alongside with my
rbtree tests, and noticed the following:
If I use per-cpu call_rcu threads with URCU_CALL_RCU_RT flag, with one
updater thread only for my rbtree (no reader), I get 38365 updates/s.
If I add cpu affinity to these per-cpu call_rcu threads (I have prepared
a patch that does this), it jumps to 54219 updates/s. So it looks like
keeping per-cpu affinity for the call_rcu thread is a good thing.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 19:40:09 +0000 (15:40 -0400)]
rbtree: Setup per-cpu RCU worker threads in test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 16:57:57 +0000 (12:57 -0400)]
Merge branch 'master' into rbtree2
Conflicts:
Makefile.am
Edited rbtree API to allow rbtree users to specify which call_rcu should
be used.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Fri, 3 Jun 2011 16:49:21 +0000 (12:49 -0400)]
Document the new call_rcu() primitives.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Fri, 3 Jun 2011 16:47:56 +0000 (12:47 -0400)]
Make defer_rcu() usable from library using multiple URCU implementations
[ Edit: minor tab to whitespace cleanup ]
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Fri, 3 Jun 2011 16:44:50 +0000 (12:44 -0400)]
Allow taking address of rcu_read_lock() and rcu_read_unlock()
Also incorporate README feedback from Mathieu and Josh.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Fri, 3 Jun 2011 16:43:17 +0000 (12:43 -0400)]
Map symbols to allow multiple RCU flavors to be used in one binary
Probably need similar mapping for rcu_defer(). Definitely need
backwards-compatibility mapping for programs compiled against
old versions of the library.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Fri, 3 Jun 2011 16:42:00 +0000 (12:42 -0400)]
Provide pthread_atfork-friendly interfaces
Provides call_rcu_before_fork() and call_rcu_after_fork_parent() to
go with the existing call_rcu_after_fork_child().
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 14:16:59 +0000 (10:16 -0400)]
rbtree: Use malloc/free directly in test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 14:09:45 +0000 (10:09 -0400)]
Wrap allocation/free into static function
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 14:05:42 +0000 (10:05 -0400)]
Update comment
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 14:02:59 +0000 (10:02 -0400)]
rbtree API change: handle node memory allocation internally
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 17:33:46 +0000 (13:33 -0400)]
Enable range search tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 17:33:31 +0000 (13:33 -0400)]
Fix search range comparison
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 16:45:34 +0000 (12:45 -0400)]
Temporarily disable range tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 15:05:33 +0000 (11:05 -0400)]
Fix end range test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 15:04:09 +0000 (11:04 -0400)]
rbtree: test range lookups with larger ranges
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 14:48:25 +0000 (10:48 -0400)]
Comment debug facility
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 14:45:58 +0000 (10:45 -0400)]
Add explanation about reader vs writer concurrency behavior
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 13:54:04 +0000 (09:54 -0400)]
Use larger number pool in test
Prior range was to stress-test collisions.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 13:49:37 +0000 (09:49 -0400)]
Update todo comment about memory allocation error
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 13:42:04 +0000 (09:42 -0400)]
Add search begin key test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 13:40:22 +0000 (09:40 -0400)]
Range search works
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 02:37:51 +0000 (22:37 -0400)]
Recalculate max end values on rotation
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 02:31:16 +0000 (22:31 -0400)]
Use comparison function for end/max_end
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 02:22:51 +0000 (22:22 -0400)]
rbtree: Add end recalculation for transplant
Use a "propagation stop" trick to stop propagation of end update within
the branch we are working on.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 01:22:25 +0000 (21:22 -0400)]
Add populate_node_end for insertion
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 00:38:33 +0000 (20:38 -0400)]
Remove incorrectly duplicated set_left/set_right
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 00:30:54 +0000 (20:30 -0400)]
Rename node fields to begin/end
This states the inclusiveness (begin) and exclusiveness (end) more
explicitely.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 17:38:14 +0000 (13:38 -0400)]
RBtree: Drop initial range support
Will be reimplemented with ranges within nodes.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Yannick Brosseau [Wed, 1 Jun 2011 15:00:25 +0000 (11:00 -0400)]
Add pkg-config files for all urcu libs
Signed-off-by: Yannick Brosseau <yannick.brosseau@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 20:23:56 +0000 (16:23 -0400)]
RBtree: move wmb after node write
We need to write all the new info into the node before we publish it
(make it visible to readers).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 19:33:28 +0000 (15:33 -0400)]
Cleanup API
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 18:50:48 +0000 (14:50 -0400)]
RBtree: Only execute usleep() in debug mode
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 18:49:31 +0000 (14:49 -0400)]
Add range test case, fix range search
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 17:49:28 +0000 (13:49 -0400)]
Add search min/max for ranges
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 17:16:01 +0000 (13:16 -0400)]
RCU RBTree: Populate range information (augmented rbtree)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 03:16:51 +0000 (23:16 -0400)]
Add _STORE_SHARED to set_parent
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 02:42:29 +0000 (22:42 -0400)]
RCU rbtree test: handle duplicate random numbers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 02:22:05 +0000 (22:22 -0400)]
rbtree: disable debug mode
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 02:18:24 +0000 (22:18 -0400)]
RCU RB tree test : add prev/next/max/min test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 02:18:07 +0000 (22:18 -0400)]
Fix rcu_rbtree_prev
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 30 May 2011 02:17:50 +0000 (22:17 -0400)]
Cleanup header
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 29 May 2011 16:38:13 +0000 (12:38 -0400)]
Atomicize parent pointer and position update/read
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 29 May 2011 15:33:53 +0000 (11:33 -0400)]
RCU search fix
Fix removal by using the decay scheme for the whole branch from z->right
to y (inclusively) when transplanting y up to z.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 29 May 2011 00:46:13 +0000 (20:46 -0400)]
Add missing read lock in test, cleanup transplant
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 28 May 2011 23:20:59 +0000 (19:20 -0400)]
Use decay for rotate and transplant
Handles assumptions about shared nil node more gracefully.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 28 May 2011 22:22:43 +0000 (18:22 -0400)]
Add RCU read-side test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 28 May 2011 22:14:37 +0000 (18:14 -0400)]
Fix rbtree for nr items > 4, add rcu and non-rcu rotate and transplant
Add non-RCU rotate and transplant for debugging.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 28 May 2011 21:47:23 +0000 (17:47 -0400)]
rcu rbtree: make rotation reader-aware
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 28 May 2011 21:26:41 +0000 (17:26 -0400)]
Implement transplant based on decay scheme
Works with writer test. Concurrent RCU reader not supported yet.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 28 May 2011 17:35:21 +0000 (13:35 -0400)]
rbtree: use decay scheme
Rotations implemented. Write-only tested. Not supporting RCU readers
yet.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 28 May 2011 00:39:52 +0000 (20:39 -0400)]
Reimplement basic non-RCU rbtree
Use as a starting point for RCU rbtree iterative development/test
starting from this non-RCU implementation.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Colin McCabe [Wed, 11 May 2011 11:38:29 +0000 (07:38 -0400)]
userspace-rcu tests: zero array before using
It seems like we need the test arrays to start out zeroed.
Without this patch, I get errors like this when running the tests:
test_urcu: test_urcu.c:201: test_array_alloc:
Assertion `test_array[index].a == 0xDEADBEEF || test_array[index].a ==
0' failed.
Signed-off-by: Colin McCabe <cmccabe@alumni.cmu.edu>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Jason Wessel [Wed, 4 May 2011 19:14:14 +0000 (15:14 -0400)]
arm: put CONFIG_RCU_ARM_HAVE_DMB in the global config.h
Change CONFIG_ARM_HAVE_DMB to CONFIG_RCU_ARM_HAVE_DMB while at the
same time making it seen as a global setting in urch/config.h.
The initial ARM < v7 work missed this setting, which allowed the URCU
to package to build correctly, but exposed the memorry barriers
defines incorrectly for other applications using the URCU headers.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 21 Mar 2011 21:55:30 +0000 (17:55 -0400)]
Cleanup: remove unused value warning
return value of cmpxchg is purposefully unused in
_cds_lfq_enqueue_rcu(). Cast it to (void) to remove the compiler
warning.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Wed, 9 Mar 2011 02:51:54 +0000 (21:51 -0500)]
Provide cleanup interfaces for per-CPU and per-thread call_rcu threads
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Wed, 9 Mar 2011 02:50:26 +0000 (21:50 -0500)]
Maintain list of struct call_rcu_data to keep valgrind happy.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Wed, 9 Mar 2011 02:48:49 +0000 (21:48 -0500)]
Add call_rcu() interface
Adds call_rcu(), with RCU threads to invoke the callbacks. By default,
there will be one such RCU thread per process, created the first time
that call_rcu() is invoked. On systems supporting sched_getcpu(), it
is possible to create one RCU thread per CPU by calling
create_all_cpu_call_rcu_data().
This version includes feedback from Mathieu Desnoyers.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Paul E. McKenney [Wed, 9 Mar 2011 02:37:43 +0000 (21:37 -0500)]
Fix ppc asm syntax error.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 4 Mar 2011 17:33:20 +0000 (12:33 -0500)]
update version to 0.5.4
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 4 Mar 2011 17:25:08 +0000 (12:25 -0500)]
urcu-bp: Update fork() handling
Introduce
extern void rcu_bp_before_fork(void);
extern void rcu_bp_after_fork_parent(void);
extern void rcu_bp_after_fork_child(void);
to handle fork gracefully. These disable signals and hold the registry mutex
across forks.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 3 Mar 2011 21:08:21 +0000 (16:08 -0500)]
Version 0.5.3
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 3 Mar 2011 16:49:06 +0000 (11:49 -0500)]
Update README for urcu-bp fork handling
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 3 Mar 2011 15:05:48 +0000 (10:05 -0500)]
README: describe fork() interaction
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 3 Mar 2011 02:19:00 +0000 (21:19 -0500)]
urcu-bp: no "need_mb" in distrust signal config
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Jason Wessel [Mon, 28 Feb 2011 16:36:42 +0000 (11:36 -0500)]
Update the README to change armv7l to arm
ARM v5 and ARM v6 are known to work using compiler barriers.
[ edit: add a missing comma while we are there ]
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 28 Feb 2011 16:35:09 +0000 (11:35 -0500)]
ARM: use dmb for rmb and wmb in addition to mb
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Jason Wessel [Mon, 28 Feb 2011 16:34:10 +0000 (11:34 -0500)]
Add a test for the dmb instruction on ARM
The dmb instruction is used to implement a memory barrier on modern
ARM hardware. The older generations of processors which are included
in single processor systems can get by on the generic implementation
of the cmm_mb(). This will allow the user space rcu to work on many
other ARM systems.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Jason Wessel [Mon, 28 Feb 2011 16:33:42 +0000 (11:33 -0500)]
hange the arm headers to remove all the references to v7
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Jason Wessel [Mon, 28 Feb 2011 16:33:19 +0000 (11:33 -0500)]
Make armv7l headers generic for the arm architecture
This commit simply moves the files named *armv7l* to *arm*
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 21 Feb 2011 21:17:44 +0000 (16:17 -0500)]
URCU list: remove leftover namespace clash (list_t type removed)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 31 Dec 2010 17:54:52 +0000 (12:54 -0500)]
urcu_defer: update test programs (build fix)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 31 Dec 2010 17:53:34 +0000 (12:53 -0500)]
rcu_defer test: handle error value
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 31 Dec 2010 17:50:59 +0000 (12:50 -0500)]
urcu-defer: handle malloc error value
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 19 Nov 2010 03:20:31 +0000 (22:20 -0500)]
Version 0.5.2
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 19 Nov 2010 03:18:42 +0000 (22:18 -0500)]
Fix get_cycles -> caa_get_cycles
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 19 Nov 2010 02:51:16 +0000 (21:51 -0500)]
Version 0.5.1
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 19 Nov 2010 02:47:14 +0000 (21:47 -0500)]
ACCESS_ONCE should also have CMM_ prefix
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 19 Nov 2010 02:44:59 +0000 (21:44 -0500)]
LOAD_SHARED and STORE_SHARED should have CMM_ prefix
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 19 Nov 2010 02:38:17 +0000 (21:38 -0500)]
Fix CAA_CAA -> CAA
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 19 Nov 2010 02:35:41 +0000 (21:35 -0500)]
Fix missing BITS_PER_LONG -> CAA_BITS_PER_LONG rename
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 18 Nov 2010 20:56:47 +0000 (15:56 -0500)]
update version to 0.5.0
David Goulet [Thu, 18 Nov 2010 20:48:01 +0000 (15:48 -0500)]
Rename all data structure with prefix cds_
This is the third and last patch of the namespace refactoring.
The prefix cds_ stands for Concurrent Data Structure and is
use for queue, list, hlist and stack.
For RCU protected data strucutre, the prefix is also added but
the suffix _rcu is appended. This suffix indicate and RCU protection.
Signed-off-by: David Goulet <david.goulet@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
David Goulet [Thu, 18 Nov 2010 20:46:38 +0000 (15:46 -0500)]
Rename all arch primitives with prefix caa_
This is the second patch for reducing namespace pollution.
The caa_ prefix stands for Concurrent Architecture Abstraction.
Again, suggested by Mathieu Desnoyers and Paul E. Mckenney.
Every define, macro and function specific to the architecture
abstraction of liburcu is modified with that prefix
Signed-off-by: David Goulet <david.goulet@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
David Goulet [Thu, 18 Nov 2010 20:45:20 +0000 (15:45 -0500)]
Rename all memory primitives with prefix cmm_
In order to not pollute the userspace namespace for application
using liburcu or any lib/apps linked with urcu, this patch if the
first of three major refactor for naming convention.
The cmm_ prefix is a short name for Concurrent Memory Model and was
suggested by Mathieu Desnoyers and Paul E. Mckenney. Every memory
primitives such as mb, wmb, rmb, and so on are renamed.
Signed-off-by: David Goulet <david.goulet@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
David Goulet [Mon, 15 Nov 2010 19:12:00 +0000 (14:12 -0500)]
Add missing test binaries to .gitignore
Signed-off-by: David Goulet <david.goulet@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
David Goulet [Sat, 13 Nov 2010 14:30:04 +0000 (09:30 -0500)]
Add config.h and stamp-h2 to gitignore
Signed-off-by: David Goulet <david.goulet@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 6 Nov 2010 19:09:29 +0000 (15:09 -0400)]
Add compiler barriers to read-side for mutex ordering
Ensure that mutex acquisition/release is not reordered wrt rcu read lock/unlock.
No impact in practice because pthreads lock/unlock primitives act as memory
barriers. But we should provide the same guarantees we are expecting from other
locking primitives, hence this modification.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Sep 2010 20:48:19 +0000 (16:48 -0400)]
Fix missing urcu_ref.h in Makefile.am
The 0.4.7 tarball is missing 'urcu/urcu_ref.h', causing the following
error:
CC rculfqueue.lo
In file included from rculfqueue.c:26:
urcu/rculfqueue.h:26:22: error: urcu_ref.h: No such file or directory
In file included from rculfqueue.c:26:
urcu/rculfqueue.h:45: error: field ‘ref’ has incomplete type
In file included from rculfqueue.c:27:
urcu/rculfqueue-static.h:29:27: error: urcu/urcu_ref.h: No such file or directory
Reported-by: Jon Bernard <jbernard@debian.org>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 22 Sep 2010 20:08:47 +0000 (16:08 -0400)]
update version to 0.4.7
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 Aug 2010 15:16:34 +0000 (11:16 -0400)]
urcu lfstack: pop needs rcu read lock
The pop side needs to hold the RCU read lock to deal with ABA problem.
The push side does not need to hold the RCU read lock because even if the next
item is changed to the same value initially read, the stack will still be
consistent.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 Aug 2010 14:14:19 +0000 (10:14 -0400)]
lfstack: simplification
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 22 Aug 2010 14:21:19 +0000 (10:21 -0400)]
rculfstack: LGPL-ize
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 22 Aug 2010 13:21:58 +0000 (09:21 -0400)]
rculfqueue: LGPL-ize
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 22 Aug 2010 13:08:47 +0000 (09:08 -0400)]
add missing comment to wfstack.c
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 22 Aug 2010 12:52:13 +0000 (08:52 -0400)]
wfstack: LGPL-ize
Create wrapper symbols for LGPL linking.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 22 Aug 2010 12:44:41 +0000 (08:44 -0400)]
wfqueue: provide API for caller-locked dequeue
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
This page took 0.040573 seconds and 4 git commands to generate.