userspace-rcu.git
10 years agorcuja test: cleanup
Mathieu Desnoyers [Fri, 31 May 2013 17:48:04 +0000 (13:48 -0400)] 
rcuja test: cleanup

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja.sh: add node leak detection
Mathieu Desnoyers [Fri, 31 May 2013 17:26:00 +0000 (13:26 -0400)] 
rcuja.sh: add node leak detection

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja tests: node leak detection
Mathieu Desnoyers [Fri, 31 May 2013 17:23:49 +0000 (13:23 -0400)] 
rcuja tests: node leak detection

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoexpand runja.sh
Mathieu Desnoyers [Fri, 31 May 2013 17:09:46 +0000 (13:09 -0400)] 
expand runja.sh

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoja tests: add printout
Mathieu Desnoyers [Fri, 31 May 2013 17:09:33 +0000 (13:09 -0400)] 
ja tests: add printout

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja tests: add vs add unique
Mathieu Desnoyers [Fri, 31 May 2013 16:42:40 +0000 (12:42 -0400)] 
rcuja tests: add vs add unique

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorunja.sh: run sanity tests
Mathieu Desnoyers [Fri, 31 May 2013 16:31:49 +0000 (12:31 -0400)] 
runja.sh: run sanity tests

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: return errors on destroy
Mathieu Desnoyers [Fri, 31 May 2013 16:31:38 +0000 (12:31 -0400)] 
rcuja: return errors on destroy

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja tests: return errors
Mathieu Desnoyers [Fri, 31 May 2013 16:31:25 +0000 (12:31 -0400)] 
rcuja tests: return errors

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: add runja.sh
Mathieu Desnoyers [Fri, 31 May 2013 16:20:12 +0000 (12:20 -0400)] 
rcuja: add runja.sh

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: cleanup destroy print output
Mathieu Desnoyers [Fri, 31 May 2013 16:10:27 +0000 (12:10 -0400)] 
rcuja: cleanup destroy print output

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: move debugging info into judy array structure
Mathieu Desnoyers [Fri, 31 May 2013 16:00:43 +0000 (12:00 -0400)] 
rcuja: move debugging info into judy array structure

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: use rcu_barrier in destroy
Mathieu Desnoyers [Fri, 31 May 2013 15:45:15 +0000 (11:45 -0400)] 
rcuja: use rcu_barrier in destroy

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoImplement rcu_barrier()
Mathieu Desnoyers [Fri, 31 May 2013 15:32:16 +0000 (11:32 -0400)] 
Implement rcu_barrier()

Awaits for all in-flight call_rcu handlers to complete execution before
returning.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: tweak pigeon min child for 32-bit
Mathieu Desnoyers [Fri, 31 May 2013 02:51:22 +0000 (22:51 -0400)] 
rcuja: tweak pigeon min child for 32-bit

value 89 was causing 2% fallback node with random population. value 83
triggers only 0.01% fallback nodes.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: tweak pigeon min child for 64-bit
Mathieu Desnoyers [Fri, 31 May 2013 02:27:13 +0000 (22:27 -0400)] 
rcuja: tweak pigeon min child for 64-bit

value 101 was causing 2% fallback node with random population. value 95
triggers only 0.01% fallback nodes.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja testing: add arbitrary wait
Mathieu Desnoyers [Fri, 31 May 2013 02:14:51 +0000 (22:14 -0400)] 
rcuja testing: add arbitrary wait

For testing purposes, wait for free to be performed.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja fix: perform lookup in attach node
Mathieu Desnoyers [Fri, 31 May 2013 02:10:38 +0000 (22:10 -0400)] 
rcuja fix: perform lookup in attach node

Handles case where the existing location is not yet reserved. Therefore,
a pointer check cannot be used to check if it has been concurrently
populated. A full-blown lookup is therefore required.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: implement add unique
Mathieu Desnoyers [Thu, 30 May 2013 20:34:59 +0000 (16:34 -0400)] 
rcuja: implement add unique

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: fixes and add redesign of "add"
Mathieu Desnoyers [Thu, 30 May 2013 20:06:23 +0000 (16:06 -0400)] 
rcuja: fixes and add redesign of "add"

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja test: destroy should be done online
Mathieu Desnoyers [Thu, 30 May 2013 20:05:51 +0000 (16:05 -0400)] 
rcuja test: destroy should be done online

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: print info about allocated/freed/fallback nodes
Mathieu Desnoyers [Thu, 30 May 2013 11:08:35 +0000 (07:08 -0400)] 
rcuja: print info about allocated/freed/fallback nodes

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja fix: fix 2d distance calculation
Mathieu Desnoyers [Thu, 30 May 2013 10:57:43 +0000 (06:57 -0400)] 
rcuja fix: fix 2d distance calculation

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja fix: update 2d distance calculation
Mathieu Desnoyers [Thu, 30 May 2013 02:41:26 +0000 (22:41 -0400)] 
rcuja fix: update 2d distance calculation

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: add same can use same fallback as add next
Mathieu Desnoyers [Thu, 30 May 2013 02:06:45 +0000 (22:06 -0400)] 
rcuja: add same can use same fallback as add next

Still need to figure out why this fallback is reached in add same.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: implement 2d distribution
Mathieu Desnoyers [Thu, 30 May 2013 01:54:09 +0000 (21:54 -0400)] 
rcuja: implement 2d distribution

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja 1d distribution: cleanup
Mathieu Desnoyers [Wed, 29 May 2013 19:48:16 +0000 (15:48 -0400)] 
rcuja 1d distribution: cleanup

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: implement 1 dimension pool distribution
Mathieu Desnoyers [Tue, 28 May 2013 13:29:00 +0000 (09:29 -0400)] 
rcuja: implement 1 dimension pool distribution

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix rcuja: fallback when adding element to full pool
Mathieu Desnoyers [Tue, 28 May 2013 03:58:39 +0000 (23:58 -0400)] 
Fix rcuja: fallback when adding element to full pool

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja test: fix -k option
Mathieu Desnoyers [Tue, 28 May 2013 03:49:11 +0000 (23:49 -0400)] 
rcuja test: fix -k option

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja: Add missing header
Mathieu Desnoyers [Mon, 27 May 2013 18:59:01 +0000 (14:59 -0400)] 
rcuja: Add missing header

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja test: print mul fact
Mathieu Desnoyers [Mon, 27 May 2013 18:53:00 +0000 (14:53 -0400)] 
rcuja test: print mul fact

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja test: add key multiplication factor
Mathieu Desnoyers [Mon, 27 May 2013 18:48:23 +0000 (14:48 -0400)] 
rcuja test: add key multiplication factor

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agotest rcuja: add ratio parameter
Mathieu Desnoyers [Mon, 27 May 2013 17:39:25 +0000 (13:39 -0400)] 
test rcuja: add ratio parameter

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja fix: list prev pointer vs recompaction
Mathieu Desnoyers [Mon, 27 May 2013 17:13:55 +0000 (13:13 -0400)] 
rcuja fix: list prev pointer vs recompaction

We should update the list prev pointer (for the first node) when a
recompaction changes the address of the list head. Currently a
work-around.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix rcuja: concurrency checks
Mathieu Desnoyers [Mon, 27 May 2013 17:12:44 +0000 (13:12 -0400)] 
Fix rcuja: concurrency checks

add/delete need to re-check that RCU lookups are still valid after
taking node locks.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja test: use poison_free
Mathieu Desnoyers [Mon, 27 May 2013 17:10:08 +0000 (13:10 -0400)] 
rcuja test: use poison_free

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja test: add missing rcu read unlock
Mathieu Desnoyers [Mon, 27 May 2013 17:09:38 +0000 (13:09 -0400)] 
rcuja test: add missing rcu read unlock

No impact for now, since we use QSBR.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja fix: handle add/removal/add concurrency
Mathieu Desnoyers [Thu, 23 May 2013 21:02:14 +0000 (17:02 -0400)] 
rcuja fix: handle add/removal/add concurrency

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja fix: del wrt concurrency
Mathieu Desnoyers [Thu, 23 May 2013 15:16:13 +0000 (11:16 -0400)] 
rcuja fix: del wrt concurrency

testing with:
test_urcu_ja 0 3 10 -v -M 1 -N 1 -O 1

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix urcu test: incorrect handling of del/free
Mathieu Desnoyers [Thu, 23 May 2013 15:15:49 +0000 (11:15 -0400)] 
Fix urcu test: incorrect handling of del/free

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agohlist: remove needless "member" parameter
Mathieu Desnoyers [Thu, 23 May 2013 14:33:39 +0000 (10:33 -0400)] 
hlist: remove needless "member" parameter

cds_hlist_for_each_rcu and cds_hlist_first_rcu don't need to "member"
parameter at all.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix rcuja: chain/unchain locking vs retry
Mathieu Desnoyers [Thu, 23 May 2013 13:54:24 +0000 (09:54 -0400)] 
Fix rcuja: chain/unchain locking vs retry

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix rcuja: delete last node
Mathieu Desnoyers [Thu, 23 May 2013 00:46:47 +0000 (20:46 -0400)] 
Fix rcuja: delete last node

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agorcuja fix: get the right node
Mathieu Desnoyers [Sat, 18 May 2013 17:19:09 +0000 (19:19 +0200)] 
rcuja fix: get the right node

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix rcuja: handle concurrent updates
Mathieu Desnoyers [Sat, 18 May 2013 15:18:52 +0000 (17:18 +0200)] 
Fix rcuja: handle concurrent updates

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: Add debug output
Mathieu Desnoyers [Sat, 18 May 2013 15:18:31 +0000 (17:18 +0200)] 
rcuja: Add debug output

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja test: add rcu_ prefix to debug_yield_read
Mathieu Desnoyers [Tue, 14 May 2013 15:03:31 +0000 (17:03 +0200)] 
rcuja test: add rcu_ prefix to debug_yield_read

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: allow non-power of 2 keys
Mathieu Desnoyers [Wed, 29 Aug 2012 05:17:15 +0000 (22:17 -0700)] 
rcuja: allow non-power of 2 keys

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add multithread test
Mathieu Desnoyers [Wed, 29 Aug 2012 05:13:24 +0000 (22:13 -0700)] 
rcuja: add multithread test

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: rcuja: typo
Mathieu Desnoyers [Wed, 29 Aug 2012 05:12:56 +0000 (22:12 -0700)] 
Fix: rcuja: typo

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: test duplicate node/key support
Mathieu Desnoyers [Sun, 26 Aug 2012 00:57:59 +0000 (20:57 -0400)] 
rcuja: test duplicate node/key support

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: fix duplicate node/key support
Mathieu Desnoyers [Sun, 26 Aug 2012 00:57:43 +0000 (20:57 -0400)] 
rcuja: fix duplicate node/key support

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agohlist: implement non-entry API
Mathieu Desnoyers [Sun, 26 Aug 2012 00:57:24 +0000 (20:57 -0400)] 
hlist: implement non-entry API

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: fix delete
Mathieu Desnoyers [Sun, 26 Aug 2012 00:12:00 +0000 (20:12 -0400)] 
rcuja: fix delete

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: free all leaf nodes at destruction
Mathieu Desnoyers [Fri, 24 Aug 2012 21:30:02 +0000 (17:30 -0400)] 
rcuja: free all leaf nodes at destruction

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agohlist: implement cds_hlist_first_entry_rcu
Mathieu Desnoyers [Fri, 24 Aug 2012 21:29:52 +0000 (17:29 -0400)] 
hlist: implement cds_hlist_first_entry_rcu

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: implement delete function
Mathieu Desnoyers [Fri, 24 Aug 2012 17:22:13 +0000 (13:22 -0400)] 
rcuja: implement delete function

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agohlist: implement cds_hlist_empty
Mathieu Desnoyers [Fri, 24 Aug 2012 17:21:49 +0000 (13:21 -0400)] 
hlist: implement cds_hlist_empty

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: partial implementation of cds_ja_del
Mathieu Desnoyers [Thu, 23 Aug 2012 19:31:06 +0000 (15:31 -0400)] 
rcuja: partial implementation of cds_ja_del

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: implement ja_node_clear_nth
Mathieu Desnoyers [Wed, 22 Aug 2012 16:58:17 +0000 (12:58 -0400)] 
rcuja: implement ja_node_clear_nth

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: extend tests, more fixes
Mathieu Desnoyers [Tue, 21 Aug 2012 21:38:27 +0000 (17:38 -0400)] 
rcuja: extend tests, more fixes

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: fix max depth test
Mathieu Desnoyers [Tue, 21 Aug 2012 14:42:38 +0000 (10:42 -0400)] 
rcuja: fix max depth test

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: swap key
Mathieu Desnoyers [Tue, 21 Aug 2012 14:40:44 +0000 (10:40 -0400)] 
rcuja: swap key

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add fallback nodes
Mathieu Desnoyers [Tue, 21 Aug 2012 13:08:46 +0000 (09:08 -0400)] 
rcuja: add fallback nodes

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: various fixes
Mathieu Desnoyers [Tue, 21 Aug 2012 00:25:37 +0000 (20:25 -0400)] 
rcuja: various fixes

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add basic test
Mathieu Desnoyers [Mon, 20 Aug 2012 16:02:54 +0000 (12:02 -0400)] 
rcuja: add basic test

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: create shadow node for root
Mathieu Desnoyers [Sun, 19 Aug 2012 13:28:53 +0000 (09:28 -0400)] 
rcuja: create shadow node for root

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: implement add
Mathieu Desnoyers [Sun, 19 Aug 2012 01:16:34 +0000 (21:16 -0400)] 
rcuja: implement add

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: implement lookup
Mathieu Desnoyers [Mon, 13 Aug 2012 13:58:40 +0000 (09:58 -0400)] 
rcuja: implement lookup

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: rename cds_ja_node to cds_ja_inode
Mathieu Desnoyers [Mon, 13 Aug 2012 13:16:13 +0000 (09:16 -0400)] 
rcuja: rename cds_ja_node to cds_ja_inode

inode for internal node.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: new and destroy
Mathieu Desnoyers [Mon, 13 Aug 2012 12:26:55 +0000 (08:26 -0400)] 
rcuja: new and destroy

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: rename to cds_ja
Mathieu Desnoyers [Mon, 13 Aug 2012 12:09:00 +0000 (08:09 -0400)] 
rcuja: rename to cds_ja

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add comment about use of number of nodes
Mathieu Desnoyers [Mon, 13 Aug 2012 00:55:31 +0000 (20:55 -0400)] 
rcuja: add comment about use of number of nodes

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: fix iteration on recompact add
Mathieu Desnoyers [Mon, 13 Aug 2012 00:39:33 +0000 (20:39 -0400)] 
rcuja: fix iteration on recompact add

We must iterate on all entries by position, not by value.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: share lock across all nodes with same key
Mathieu Desnoyers [Sun, 12 Aug 2012 23:52:58 +0000 (19:52 -0400)] 
rcuja: share lock across all nodes with same key

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: no need to link with urcu lib anymore
Mathieu Desnoyers [Sun, 12 Aug 2012 20:50:02 +0000 (16:50 -0400)] 
rcuja: no need to link with urcu lib anymore

Now that we use the rcu flavor provided as parameter by the application,
there is no need to link with a urcu lib flavor.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: use rcu ja app flavor for shadow hash table
Mathieu Desnoyers [Sun, 12 Aug 2012 20:26:53 +0000 (16:26 -0400)] 
rcuja: use rcu ja app flavor for shadow hash table

Since we use call_rcu to delay reclaim of the rcu ja node too, we need
to use the same RCU flavor as the application that calls the RCU JA API.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: shadow clear also frees the rcu ja node associated
Mathieu Desnoyers [Sun, 12 Aug 2012 20:13:27 +0000 (16:13 -0400)] 
rcuja: shadow clear also frees the rcu ja node associated

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: implement shadow node hash table
Mathieu Desnoyers [Sun, 12 Aug 2012 20:06:21 +0000 (16:06 -0400)] 
rcuja: implement shadow node hash table

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add shadow nodes hash table
Mathieu Desnoyers [Sun, 12 Aug 2012 19:08:00 +0000 (15:08 -0400)] 
rcuja: add shadow nodes hash table

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add data structures for rcu_ja and shadow nodes
Mathieu Desnoyers [Sun, 12 Aug 2012 18:38:52 +0000 (14:38 -0400)] 
rcuja: add data structures for rcu_ja and shadow nodes

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add missing assign in recompact
Mathieu Desnoyers [Sun, 12 Aug 2012 18:29:40 +0000 (14:29 -0400)] 
rcuja: add missing assign in recompact

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: implement node add recompaction
Mathieu Desnoyers [Sun, 12 Aug 2012 18:04:40 +0000 (14:04 -0400)] 
rcuja: implement node add recompaction

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: set node update, rcu-ize get node/set node
Mathieu Desnoyers [Sun, 12 Aug 2012 17:06:53 +0000 (13:06 -0400)] 
rcuja: set node update, rcu-ize get node/set node

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: cleanup
Mathieu Desnoyers [Sun, 12 Aug 2012 16:51:14 +0000 (12:51 -0400)] 
rcuja: cleanup

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: implement node set nth
Mathieu Desnoyers [Fri, 3 Aug 2012 03:07:23 +0000 (23:07 -0400)] 
rcuja: implement node set nth

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: introduce union to represent nodes
Mathieu Desnoyers [Mon, 30 Jul 2012 03:47:36 +0000 (23:47 -0400)] 
rcuja: introduce union to represent nodes

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja testpop: print extra items in subclass instead of confusing "unbalance"
Mathieu Desnoyers [Sat, 16 Jun 2012 19:14:03 +0000 (15:14 -0400)] 
rcuja testpop: print extra items in subclass instead of confusing "unbalance"

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoUse statistical approach to approximate the max number of nodes per population
Mathieu Desnoyers [Sat, 16 Jun 2012 18:12:55 +0000 (14:12 -0400)] 
Use statistical approach to approximate the max number of nodes per population

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: Update design document, discuss pool distributions
Mathieu Desnoyers [Tue, 20 Mar 2012 13:15:47 +0000 (09:15 -0400)] 
rcuja: Update design document, discuss pool distributions

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: use pool of linear array instead of bitmap
Mathieu Desnoyers [Fri, 9 Mar 2012 23:14:21 +0000 (18:14 -0500)] 
rcuja: use pool of linear array instead of bitmap

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoRCU judy array: implement node get functions
Mathieu Desnoyers [Fri, 9 Mar 2012 18:09:18 +0000 (13:09 -0500)] 
RCU judy array: implement node get functions

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: Increase granularity
Mathieu Desnoyers [Fri, 9 Mar 2012 03:23:33 +0000 (22:23 -0500)] 
rcuja: Increase granularity

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoRCU Judy Array Design and initial files
Mathieu Desnoyers [Fri, 9 Mar 2012 01:16:27 +0000 (20:16 -0500)] 
RCU Judy Array Design and initial files

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: membarrier fallback symbol conflict
Mathieu Desnoyers [Wed, 8 May 2013 13:53:45 +0000 (09:53 -0400)] 
Fix: membarrier fallback symbol conflict

* Lai Jiangshan (laijs@cn.fujitsu.com) wrote:
> Hi, Mathieu,
>
> There is a big compatible problem in URCU which should be fix in next round.
>
> LB: liburcu built on the system which has sys_membarrier().
> LU: liburcu built on the system which does NOT have sys_membarrier().
>
> LBM: liburcu-mb ....
> LUM: liburcu-mb ...
>
> AB: application(-lliburcu) built on the system which has sys_membarrier().
> AU: application(-lliburcu) built on the system which does NOT have
> sys_membarrier().
>
> ABM application(-lliburcu-mb) ...
> AUM application(-lliburcu-mb) ...
>
> AB/AU + LB/LU: 4 combinations
> ABM/AUM + LBM/LUM: 4 combinations
>
> I remember some of the 8 combinations can't works due to symbols are
> miss match.  only LU+AB and LB+AU ?
>
> could you check it?
>
> How to fix it: In LU and AU, keep all the symbol name/ABI as LA and
> AB, but only the behaviors falls back to URCU_MB.

Define membarrier() as -ENOSYS when SYS_membarrier is not found in the
system headers. Check dynamically for membarrier availability to ensure
ABI compatibility between applications and librairies.

Reported-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: Use a filled signal mask to disable all signals
Mathieu Desnoyers [Fri, 10 May 2013 11:30:18 +0000 (07:30 -0400)] 
Fix: Use a filled signal mask to disable all signals

Changelog from David Pelton's original patch:

While using lttng-ust with an application that was calling fork()
with pending signals, I found that all signals were getting unmasked
shortly before the underlying call to fork().  After some
investigation, I found that the rcu_bp_before_fork() function was
unmasking all signals.  Based on the comments for this function, it
should be masking all signals.  Inspection of the rest of the code
in urcu-bp.c revealed the same pattern in two other functions.

This patch changes the code to use a filled signal mask to disable
all signals.  The change to rcu_bp_before_fork() addressed the
problem I was seeing while using lttng-ust.  The changes to the
other two functions appear to fix other instances of the same
problem.

Updates by Mathieu Desnoyers:

- Use SIG_BLOCK instead of SIG_SETMASK when setting a filled mask. This
  has the same behavior in this case (since we're blocking all signals),
  but is semantically neater: if we ever some signals from that mask,
  we'd like to to a union with the signal mask already blocked by the
  application.
- Also fix incorrect signal masking in compat_arch_x86.c.

Reported-by: David Pelton <dpelton@ciena.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agourcu-bp: introduce struct urcu_gp
Mathieu Desnoyers [Mon, 6 May 2013 14:30:57 +0000 (10:30 -0400)] 
urcu-bp: introduce struct urcu_gp

Make urcu-bp similar to urcu-qsbr and other urcu flavors.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: struct urcu_gp broke multiflavor
Mathieu Desnoyers [Mon, 6 May 2013 14:24:14 +0000 (10:24 -0400)] 
Fix: struct urcu_gp broke multiflavor

Add mapping to namespace urcu_gp.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoCleanup test usage printout
Mathieu Desnoyers [Mon, 6 May 2013 14:03:55 +0000 (10:03 -0400)] 
Cleanup test usage printout

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
This page took 0.040675 seconds and 4 git commands to generate.