urcu.git
11 years agorcuja: add missing header
Mathieu Desnoyers [Thu, 13 Jun 2013 15:29:50 +0000 (11:29 -0400)] 
rcuja: add missing header

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agotest ja-range: max len
Mathieu Desnoyers [Thu, 13 Jun 2013 12:14:16 +0000 (08:14 -0400)] 
test ja-range: max len

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja-range: get values
Mathieu Desnoyers [Tue, 11 Jun 2013 12:53:02 +0000 (08:53 -0400)] 
rcuja-range: get values

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja-range: allow variable number of bits for key
Mathieu Desnoyers [Tue, 11 Jun 2013 12:38:26 +0000 (08:38 -0400)] 
rcuja-range: allow variable number of bits for key

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agodoc examples: add missing include path
Mathieu Desnoyers [Tue, 11 Jun 2013 02:12:21 +0000 (22:12 -0400)] 
doc examples: add missing include path

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja range: bugfixes and validation
Mathieu Desnoyers [Tue, 11 Jun 2013 02:07:47 +0000 (22:07 -0400)] 
rcuja range: bugfixes and validation

Add cds_ja_range_validate to validate consistency of the data structure
(when it is not being concurrently used).

Fix various bugs.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: fix iteration and lookup below/above equal
Mathieu Desnoyers [Tue, 11 Jun 2013 02:05:50 +0000 (22:05 -0400)] 
rcuja: fix iteration and lookup below/above equal

- fix iteration on entirely filled uint64_t keyspace: we need to reserve
  UINT64_MAX as end-of-iteration marker.
- fix linear lookups below/above or equal: should not re-read the
  pointer.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja range: range add return error value
Mathieu Desnoyers [Sun, 9 Jun 2013 21:15:11 +0000 (17:15 -0400)] 
rcuja range: range add return error value

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agotest rcuja range: fix print format
Mathieu Desnoyers [Sun, 9 Jun 2013 21:08:34 +0000 (17:08 -0400)] 
test rcuja range: fix print format

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agotest range: update error msg
Mathieu Desnoyers [Sun, 9 Jun 2013 21:07:10 +0000 (17:07 -0400)] 
test range: update error msg

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja range: add rcu read lock/unlock in new/destroy
Mathieu Desnoyers [Sun, 9 Jun 2013 21:05:44 +0000 (17:05 -0400)] 
rcuja range: add rcu read lock/unlock in new/destroy

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: fix below/above "or equal" lookup
Mathieu Desnoyers [Sun, 9 Jun 2013 21:05:06 +0000 (17:05 -0400)] 
rcuja: fix below/above "or equal" lookup

"or equal" was missing for 0 et max value.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja range test
Mathieu Desnoyers [Sun, 9 Jun 2013 20:38:45 +0000 (16:38 -0400)] 
rcuja range test

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja range: add private data to allocated ranges
Mathieu Desnoyers [Sun, 9 Jun 2013 20:12:45 +0000 (16:12 -0400)] 
rcuja range: add private data to allocated ranges

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja range: fix comment
Mathieu Desnoyers [Sun, 9 Jun 2013 20:01:53 +0000 (16:01 -0400)] 
rcuja range: fix comment

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja ranges: update API
Mathieu Desnoyers [Sun, 9 Jun 2013 17:47:28 +0000 (13:47 -0400)] 
rcuja ranges: update API

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja range: serialize freeing of contiguous ranges
Mathieu Desnoyers [Sun, 9 Jun 2013 17:17:02 +0000 (13:17 -0400)] 
rcuja range: serialize freeing of contiguous ranges

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja range: fix typo
Mathieu Desnoyers [Sun, 9 Jun 2013 16:29:47 +0000 (12:29 -0400)] 
rcuja range: fix typo

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: range implementation file
Mathieu Desnoyers [Sun, 9 Jun 2013 15:15:15 +0000 (11:15 -0400)] 
rcuja: range implementation file

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: range implementation
Mathieu Desnoyers [Fri, 7 Jun 2013 21:30:33 +0000 (17:30 -0400)] 
rcuja: range implementation

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: cleanup urcu/rcuja
Mathieu Desnoyers [Fri, 7 Jun 2013 21:29:39 +0000 (17:29 -0400)] 
rcuja: cleanup

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add duplicate at end of list
Mathieu Desnoyers [Fri, 7 Jun 2013 20:46:02 +0000 (16:46 -0400)] 
rcuja: add duplicate at end of list

Add duplicate nodes at end of list to provide key existance guarantee to
RCU traversals performed concurrently during a succession of add
followed by delete of the same key.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: remove unneeded headers
Mathieu Desnoyers [Fri, 7 Jun 2013 19:07:19 +0000 (15:07 -0400)] 
rcuja: remove unneeded headers

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: remove unneeded header
Mathieu Desnoyers [Fri, 7 Jun 2013 19:04:11 +0000 (15:04 -0400)] 
rcuja: remove unneeded header

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: testpop: fix warning
Mathieu Desnoyers [Fri, 7 Jun 2013 17:27:04 +0000 (13:27 -0400)] 
rcuja: testpop: fix warning

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: add testpop to makefile
Mathieu Desnoyers [Fri, 7 Jun 2013 17:23:25 +0000 (13:23 -0400)] 
rcuja: add testpop to makefile

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: update copyright dates
Mathieu Desnoyers [Fri, 7 Jun 2013 17:18:02 +0000 (13:18 -0400)] 
rcuja: update copyright dates

Also add HP copyright to rcuja-internal.h, thus making it a derived work
from the HP LGPLv2+ implementation of Judy array.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: derived work from HP Judy array
Mathieu Desnoyers [Fri, 7 Jun 2013 17:10:10 +0000 (13:10 -0400)] 
rcuja: derived work from HP Judy array

Add copyright notice from:

http://sourceforge.net/projects/judy/

judy-1.0.5.tar.gz

src/JudyCommon/JudyIns.c:

Original notice:

// Copyright (C) 2000 - 2002 Hewlett-Packard Company
//
// This program is free software; you can redistribute it and/or modify it
// under the term of the GNU Lesser General Public License as published by the
// Free Software Foundation; either version 2 of the License, or (at your
// option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
// for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Therefore clearly stating that rcuja.c is derived work from the LGPLv2+
Judy array implementation from Hewlett-Packard Company.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: below/above skip NULL pointers
Mathieu Desnoyers [Fri, 7 Jun 2013 17:00:16 +0000 (13:00 -0400)] 
rcuja: below/above skip NULL pointers

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: remove "free_node_cb" from destroy
Mathieu Desnoyers [Fri, 7 Jun 2013 14:23:40 +0000 (10:23 -0400)] 
rcuja: remove "free_node_cb" from destroy

It is now up to the caller to ensure that the Judy array is emptied
before destroying it.

For instance, if nodes are accessible through another data structure
than the Judy array, it may very well be valid to destroy the Judy array
without freeing memory associated to those nodes.

Destroy still takes care of freeing memory used for Judy internal nodes.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: for each key iteration
Mathieu Desnoyers [Fri, 7 Jun 2013 14:11:43 +0000 (10:11 -0400)] 
rcuja: for each key iteration

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: cleanup
Mathieu Desnoyers [Fri, 7 Jun 2013 13:30:45 +0000 (09:30 -0400)] 
rcuja: cleanup

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: below/equal result key
Mathieu Desnoyers [Fri, 7 Jun 2013 13:29:30 +0000 (09:29 -0400)] 
rcuja: below/equal result key

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja tests: test above or equal
Mathieu Desnoyers [Fri, 7 Jun 2013 12:36:38 +0000 (08:36 -0400)] 
rcuja tests: test above or equal

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: below equal/above equal
Mathieu Desnoyers [Fri, 7 Jun 2013 12:31:25 +0000 (08:31 -0400)] 
rcuja: below equal/above equal

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: update destroy comment
Mathieu Desnoyers [Fri, 7 Jun 2013 02:38:08 +0000 (22:38 -0400)] 
rcuja: update destroy comment

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: document destroy requirement
Mathieu Desnoyers [Fri, 7 Jun 2013 00:11:10 +0000 (20:11 -0400)] 
rcuja: document destroy requirement

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja tests: free node cb does not need to wait for Q.S. in destroy
Mathieu Desnoyers [Thu, 6 Jun 2013 23:43:56 +0000 (19:43 -0400)] 
rcuja tests: free node cb does not need to wait for Q.S. in destroy

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: document that destroy free_node_cb does not need to wait for Q.S.
Mathieu Desnoyers [Thu, 6 Jun 2013 23:43:37 +0000 (19:43 -0400)] 
rcuja: document that destroy free_node_cb does not need to wait for Q.S.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: extend API documentation
Mathieu Desnoyers [Thu, 6 Jun 2013 23:22:48 +0000 (19:22 -0400)] 
rcuja: extend API documentation

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: rename new_node to node in add functions
Mathieu Desnoyers [Thu, 6 Jun 2013 23:22:36 +0000 (19:22 -0400)] 
rcuja: rename new_node to node in add functions

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja API: document lookup
Mathieu Desnoyers [Thu, 6 Jun 2013 19:16:57 +0000 (15:16 -0400)] 
rcuja API: document lookup

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja fix: pointer type warning
Mathieu Desnoyers [Thu, 6 Jun 2013 19:04:24 +0000 (15:04 -0400)] 
rcuja fix: pointer type warning

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja testpop: cleanup distribution output
Mathieu Desnoyers [Thu, 6 Jun 2013 17:40:53 +0000 (13:40 -0400)] 
rcuja testpop: cleanup distribution output

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja testpop: update accounting
Mathieu Desnoyers [Thu, 6 Jun 2013 16:54:00 +0000 (12:54 -0400)] 
rcuja testpop: update accounting

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: fix 8-bit overflow in 1d/2d distribution sum
Mathieu Desnoyers [Thu, 6 Jun 2013 16:43:59 +0000 (12:43 -0400)] 
rcuja: fix 8-bit overflow in 1d/2d distribution sum

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: testpop update for 2d distribution
Mathieu Desnoyers [Thu, 6 Jun 2013 16:30:39 +0000 (12:30 -0400)] 
rcuja: testpop update for 2d distribution

Update testpop population test program according to 2d distribution
calculation updates in rcuja.c.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: 2d distribution sum improvement
Mathieu Desnoyers [Thu, 6 Jun 2013 15:59:16 +0000 (11:59 -0400)] 
rcuja: 2d distribution sum improvement

Perform inner loop in 2 checks instead of 4.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: implement ja_node_ptr fast path
Mathieu Desnoyers [Wed, 5 Jun 2013 21:43:49 +0000 (17:43 -0400)] 
rcuja: implement ja_node_ptr fast path

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja API: remove dependency on hlist
Mathieu Desnoyers [Wed, 5 Jun 2013 20:48:30 +0000 (16:48 -0400)] 
rcuja API: remove dependency on hlist

- introduce cds_ja_for_each_duplicate_rcu()

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorculist: identify stores to shared pointers
Mathieu Desnoyers [Wed, 5 Jun 2013 19:24:00 +0000 (15:24 -0400)] 
rculist: identify stores to shared pointers

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorcuja: API change: move rcu_head to user code
Mathieu Desnoyers [Wed, 5 Jun 2013 15:00:28 +0000 (11:00 -0400)] 
rcuja: API change: move rcu_head to user code

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoqsbr example: add missing return 0
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>
11 years agoAdd Wall to qsbr examples makefile
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>
11 years agoAdd QSBR minimal example
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>
11 years agorcuja: document attach role in no dead-end guarantees
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>
11 years agorcuja: lookup lower equal cannot reach dead-end
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>
11 years agorcuja: lower equal: handle concurrent removal with retry
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>
11 years agorcuja: remove unneeded endian.h
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>
11 years agorcuja: remove unneeded bitfield.h
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>
11 years agorcuja tests: test lookup lower equal for 8-bit and 16-bit judy arrays
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>
11 years agorcuja: implement lookup_lower_equal
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>
11 years agorcuja tests: fix sanity test printout
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>
11 years agorcuja test: add specific free_node()
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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
11 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>
This page took 0.040283 seconds and 4 git commands to generate.