Mathieu Desnoyers [Mon, 3 Jun 2013 20:25:47 +0000 (16:25 -0400)]
qsbr example: add missing return 0
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 20:25:35 +0000 (16:25 -0400)]
Add Wall to qsbr examples makefile
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 20:18:34 +0000 (16:18 -0400)]
Add QSBR minimal example
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 13:53:40 +0000 (09:53 -0400)]
rcuja: document attach role in no dead-end guarantees
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 06:48:29 +0000 (02:48 -0400)]
rcuja: lookup lower equal cannot reach dead-end
Thanks to the guarantees provided by ja_detach_node(), lookups can
_never_ see a branch that would lead to a dead-end. Therefore, lookup
lower/equal never needs to retry, and we thus have a bounded number of
operations for cds_ja_lookup_lower_equal().
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 05:42:45 +0000 (01:42 -0400)]
rcuja: lower equal: handle concurrent removal with retry
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 05:09:55 +0000 (01:09 -0400)]
rcuja: remove unneeded endian.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 05:07:12 +0000 (01:07 -0400)]
rcuja: remove unneeded bitfield.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 04:42:59 +0000 (00:42 -0400)]
rcuja tests: test lookup lower equal for 8-bit and 16-bit judy arrays
Sanity tests.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 04:42:44 +0000 (00:42 -0400)]
rcuja: implement lookup_lower_equal
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 3 Jun 2013 04:40:07 +0000 (00:40 -0400)]
rcuja tests: fix sanity test printout
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 31 May 2013 17:50:33 +0000 (13:50 -0400)]
rcuja test: add specific free_node()
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Mathieu Desnoyers [Sun, 12 Aug 2012 16:51:14 +0000 (12:51 -0400)]
rcuja: cleanup
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
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>
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>
This page took 0.039255 seconds and 4 git commands to generate.