Mathieu Desnoyers [Thu, 8 Oct 2009 02:17:49 +0000 (22:17 -0400)]
Restrict supported arch ot P6+ on Intel x86 32.
For now.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 02:08:22 +0000 (22:08 -0400)]
Update README
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 01:33:58 +0000 (21:33 -0400)]
Remove dependency on m4 from configure.ac
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 7 Oct 2009 23:22:59 +0000 (19:22 -0400)]
remove dependency on autotools 2.63 (unneeded)
Tested with autotools 2.13.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Pierre-Marc Fournier [Wed, 7 Oct 2009 21:45:40 +0000 (17:45 -0400)]
fix api.h generation on x86 and powerpc
Signed-off-by: Pierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 7 Oct 2009 21:29:23 +0000 (17:29 -0400)]
update urcutorture to include arch.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 7 Oct 2009 21:27:37 +0000 (17:27 -0400)]
update readme
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 7 Oct 2009 21:26:09 +0000 (17:26 -0400)]
Update api gcc in tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 7 Oct 2009 21:17:41 +0000 (17:17 -0400)]
Make bootstrap executable
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Pierre-Marc Fournier [Wed, 7 Oct 2009 21:16:24 +0000 (17:16 -0400)]
convert to autotools
Remove the old build system.
Rename arch_uatomic*.h to uatomic_arch.h, to avoid conflits with
non-generated arch_*.h.
Signed-off-by: Pierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 7 Oct 2009 16:44:32 +0000 (12:44 -0400)]
Fix tests makefile
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Jan Blunck [Tue, 6 Oct 2009 10:31:41 +0000 (12:31 +0200)]
s390: Add uatomic_set(), uatomic_read(), uatomic_add(), uatomic_cmpxchg()
Mathieu needs atomic cmpxchg and add for all architectures.
Signed-off-by: Jan Blunck <jblunck@suse.de>
Mathieu Desnoyers [Mon, 5 Oct 2009 22:05:31 +0000 (18:05 -0400)]
urcu-pointer: add more type checking
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 5 Oct 2009 19:29:09 +0000 (15:29 -0400)]
Add type checking in urcu-pointer.h macros
Ensure we have type-checking around dynamic linking macro wrappers.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 5 Oct 2009 19:04:01 +0000 (15:04 -0400)]
Remove rcu_publish_content()
API phased-out. Cannot use call_rcu anyway.
Use rcu_xchg_pointer and synchronize_rcu or
rcu_xchg_pointer and call_rcu instead.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 5 Oct 2009 19:03:32 +0000 (15:03 -0400)]
tests: remove rcu_publish_content dependency
API phased-out.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 1 Oct 2009 22:19:25 +0000 (18:19 -0400)]
rculist: include correct dependencies
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 1 Oct 2009 22:12:20 +0000 (18:12 -0400)]
urcu-bp: use mremap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 1 Oct 2009 20:31:23 +0000 (16:31 -0400)]
urcu-bp: New "bulletproof" RCU library flavor
Slower read-side/write-side, but do not require neither of:
urcu_init()
rcu_register_thread()
rcu_unregister_thread()
It is signal safe.
Specialized for the UST LTTng tracer port.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 1 Oct 2009 14:14:38 +0000 (10:14 -0400)]
Add missing system.h from make install
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 1 Oct 2009 13:48:35 +0000 (09:48 -0400)]
urcu-pointer: create specific objects and headers to deal with RCU pointers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 1 Oct 2009 02:29:44 +0000 (22:29 -0400)]
Add test for rcu_assign_pointer()
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 1 Oct 2009 02:28:47 +0000 (22:28 -0400)]
Fix rcu_assign_pointer() dynamic linking behavior
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 20:37:07 +0000 (16:37 -0400)]
userspace-rcu formal model removal
For packaging. Moved to formal-model branch.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 20:36:20 +0000 (16:36 -0400)]
Update formal model from local copy
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 19:54:15 +0000 (15:54 -0400)]
Remove ifndef for API_H
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Jon Bernard [Tue, 29 Sep 2009 19:22:54 +0000 (15:22 -0400)]
Add build support for ppc when $HOSTTYPE is "ppc"
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 15:29:27 +0000 (11:29 -0400)]
Separate arch_uatomic*.h from arch*.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 03:09:25 +0000 (23:09 -0400)]
Update tests api*.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 03:34:52 +0000 (23:34 -0400)]
Align registry data on cache line size
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 03:32:27 +0000 (23:32 -0400)]
define CACHE_LINE_SIZE in arch_*.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 03:25:15 +0000 (23:25 -0400)]
compiler.h: use stddef.h for offsetof
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 03:23:11 +0000 (23:23 -0400)]
Update .gitignore
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 03:15:21 +0000 (23:15 -0400)]
urcu-qsbr: implement list_move algorithm
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 03:07:36 +0000 (23:07 -0400)]
urcu (mb/signal): fix list move implementation
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 02:51:21 +0000 (22:51 -0400)]
urcu (mb/signal): list move
Do no wait after a single thread at a time. When threads are Q.S., move them to
a separate list.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 02:20:03 +0000 (22:20 -0400)]
list.h: add list_move
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 00:22:41 +0000 (20:22 -0400)]
urcu (signal): export urcu_init for early constructor initialization
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 00:16:15 +0000 (20:16 -0400)]
urcu-defer: use list instead of array for registry
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 29 Sep 2009 00:15:29 +0000 (20:15 -0400)]
urcu-qsbr: Add list sanity check at lib exit
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 28 Sep 2009 23:55:42 +0000 (19:55 -0400)]
urcu-qsbr: use linked list instead of array for registry
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 28 Sep 2009 23:54:38 +0000 (19:54 -0400)]
urcu (signal/mb): move thread checks outside lock
Done on local variables, no need to lock.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 28 Sep 2009 23:44:36 +0000 (19:44 -0400)]
urcu (signal/mb): use linked list instead of array for registry.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 28 Sep 2009 23:04:01 +0000 (19:04 -0400)]
Update list, rculist and hlist
- rculist : license ok
- list : fix list del
Fix rcutorture api.h implementations to use non-GPL lists.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 28 Sep 2009 22:43:56 +0000 (18:43 -0400)]
Add urcu list and list
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 28 Sep 2009 19:54:13 +0000 (15:54 -0400)]
Cleanup headers
* atomic_ -> uatomic (to remove namespace clash with libkcompat)
* moved arch.h, compiler.h, arch_uatomic.h to
/usr/include/urcu/
to make sure we do not pollute system headers.
Also add call_rcu() documentation to README.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 28 Sep 2009 14:45:23 +0000 (10:45 -0400)]
Add missing urcu-defer.{so,h} and urcu-defer-static.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 27 Sep 2009 21:26:39 +0000 (17:26 -0400)]
Document call_rcu() usage
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 27 Sep 2009 03:47:21 +0000 (23:47 -0400)]
Add missing rcu_cmpxchg_pointer define
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 26 Sep 2009 12:19:26 +0000 (08:19 -0400)]
Add multiple reader queues to futex model
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 26 Sep 2009 12:13:20 +0000 (08:13 -0400)]
Cleanup promela code for wakeup verif
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 26 Sep 2009 07:05:05 +0000 (03:05 -0400)]
Remove stale file
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 26 Sep 2009 06:53:44 +0000 (02:53 -0400)]
Add multicoreverif paper ticketlock and spinlock models
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 26 Sep 2009 06:51:04 +0000 (02:51 -0400)]
Add futex wakeup spin model
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 25 Sep 2009 21:49:31 +0000 (17:49 -0400)]
Add futex support to accelerate synchronize_rcu() on UP
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 24 Sep 2009 00:55:52 +0000 (20:55 -0400)]
urcu-defer: fix futex wakeup value
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 24 Sep 2009 00:18:28 +0000 (20:18 -0400)]
Remove extra LDFLAGS from makefile
> cc: -lpthread: linker input file unused because linking not done
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 24 Sep 2009 00:16:14 +0000 (20:16 -0400)]
Add missing include compiler.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 24 Sep 2009 00:10:51 +0000 (20:10 -0400)]
rcu torture and api.h: remove duplicated atomic primitives
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 24 Sep 2009 00:00:58 +0000 (20:00 -0400)]
test_atomic: test for byte/short atomic support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 23:23:48 +0000 (19:23 -0400)]
ppc atomic: fix atomic_dec/inc
Only require 1 arg.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 23:21:56 +0000 (19:21 -0400)]
urcu-defer: remove dependency on linux/futex.h
> cc -fPIC -Wall -I. -O2 -g -lpthread -c -o urcu-defer.o `echo urcu-defer.c urcu-defer.h | sed 's/[^ ]*\.h//g'`
> In file included from urcu-defer.c:31:
> /usr/include/linux/futex.h:96: error: expected ‘)’ before ‘*’ token
> /usr/include/linux/futex.h:100: error: expected ‘)’ before ‘*’ token
Seems broken on ppc. Just for two defines, it's not worth depending on it.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 23:18:06 +0000 (19:18 -0400)]
urcu: Move urcu_init within ifdef
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 23:16:57 +0000 (19:16 -0400)]
atomic ppc: fix missing casts and inline
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 22:29:21 +0000 (18:29 -0400)]
urcu-defer: ensure callbacks will never be enqueued forever
Even if there are no further callbacks enqueued, ensure that after a 100ms
delay, the callback queue will be dealt with.
Required proper ordering of queue vs futex.
e.g.
The idea is to perform the "check for empty queue" between the
&defer_thread_futex decrement and the test in wait_defer. It skips the
futex call and proceed if the list is non-empty.
As I am drilling into the problem, it looks very much like an attempt to
implement efficient wait queues in userspace based on sys_futex().
/*
* Wake-up any waiting defer thread. Called from many concurrent
* threads.
*/
static void wake_up_defer(void)
{
if (unlikely(atomic_read(&defer_thread_futex) == -1)) {
atomic_set(&defer_thread_futex, 0);
futex(&defer_thread_futex, FUTEX_WAKE, 0,
NULL, NULL, 0);
}
}
/*
* Defer thread waiting. Single thread.
*/
static void wait_defer(void)
{
atomic_dec(&defer_thread_futex);
smp_mb(); /* Write futex before read queue */
if (rcu_defer_num_callbacks()) {
smp_mb(); /* Read queue before write futex */
/* Callbacks are queued, don't wait. */
atomic_set(&defer_thread_futex, 0);
} else {
smp_rmb(); /* Read queue before read futex */
if (atomic_read(&defer_thread_futex) == -1)
futex(&defer_thread_futex, FUTEX_WAIT, -1,
NULL, NULL, 0);
}
}
- call_rcu():
* queue callbacks to perform
* smp_mb()
* wake_up_defer()
- defer thread:
* for (;;)
* wait_defer()
* sleep 100ms (wait for more callbacks to be enqueued)
* dequeue callbacks, execute them
The goal here is that if call_rcu() enqueues a callback (even if it
races with defer thread going to sleep), there should not be a
potentially infinite delay before it gets executed. Therefore, being
blocked in sys_futex while there is a callback to execute, without any
hope to be woken up unless another callback is queued, would not meet
that design requirement. I think that checking the number of queued
callbacks within wait_defer() as I propose here should address this
situation.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 21:23:29 +0000 (17:23 -0400)]
Fix urcu-defer: add missing brackets.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 17:34:31 +0000 (13:34 -0400)]
Cleanup: remove debug code form urcu-defer.c
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 17:21:45 +0000 (13:21 -0400)]
Move urcu_defer_queue to urcu-defer.c
Too big to be inline.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 17:14:34 +0000 (13:14 -0400)]
urcu-defer: make call_rcu() energy efficient using futex()
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Sep 2009 17:13:29 +0000 (13:13 -0400)]
Add offsetof to compiler.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Paul E. McKenney [Wed, 23 Sep 2009 07:09:59 +0000 (03:09 -0400)]
ppc atomic: Fix asm format.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 23:01:10 +0000 (19:01 -0400)]
add rcu_cmpxchg_pointer
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 22:52:40 +0000 (18:52 -0400)]
remove volatile from prototypes in atomic code
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 22:51:21 +0000 (18:51 -0400)]
update ppc atomic
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 22:44:26 +0000 (18:44 -0400)]
update x86 and ppc atomic ops
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 22:11:17 +0000 (18:11 -0400)]
Add powerpc atomic operations
cmpxchg
atomic_add_return
atomic_sub_return
atomic_add
atomic_sub
atomic_inc
atomic_dec
(already had xchg)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 20:56:18 +0000 (16:56 -0400)]
update x86_64 cmpxchg
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 21:23:08 +0000 (17:23 -0400)]
Update atomic x86_64 cmpxchg
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 21:20:56 +0000 (17:20 -0400)]
makefile update
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 21:09:55 +0000 (17:09 -0400)]
Add inc/dec x86 atomics
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 20:41:24 +0000 (16:41 -0400)]
update x86 atomic, add test atomic
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 22 Sep 2009 20:28:49 +0000 (16:28 -0400)]
extend x86 atomic operations
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 21 Sep 2009 16:26:16 +0000 (12:26 -0400)]
Add missing files in make clean
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 20 Sep 2009 16:03:37 +0000 (12:03 -0400)]
urcu-defer: remove unnecessary memory barrier
All synchronization between queue producer/consumer is performed by the write to
"head". Before this write, none of the queued data is visible from the consumer
point of view.
Therefore, just a single wmb() is required before writing to head to ensure
correct synchronization. This matches with the rmb() after reading head on the
consumer side.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 20 Sep 2009 15:39:30 +0000 (11:39 -0400)]
urcu-defer: Add fast path for empty queues
defer_barrier does not need to call synchronize_rcu() when all queues are empty.
Skip the G.P. if this is the case.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 20 Sep 2009 15:18:23 +0000 (11:18 -0400)]
urcu-defer: cleanup debug code
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 20 Sep 2009 02:23:11 +0000 (22:23 -0400)]
Deferral test update
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 20 Sep 2009 02:20:16 +0000 (22:20 -0400)]
generic urcu deferral (call_rcu())
Found out a way to encode the queues so the standard scenario is to use a single
pointer per call_rcu().
Uses more space for:
- unaligned functions pointers.
- unaligned data pointers.
- function/data value : -2L. (this is arbitrary)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 20 Sep 2009 00:05:10 +0000 (20:05 -0400)]
Rename liburcu-reclaim to liburcu-defer
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 19 Sep 2009 21:55:47 +0000 (17:55 -0400)]
urcu-reclaim cleanup
Rename "reader" to "reclaimer", because urcu-reclaim keeps track of "reclaimer"
threads (rcu writers) and has its own reclaiming thread periodically performing
the batch reclamation.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 19 Sep 2009 21:45:41 +0000 (17:45 -0400)]
Update header heading
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 19 Sep 2009 21:28:06 +0000 (17:28 -0400)]
Add rcu-reclaim.so library
Add "automated" RCU memory reclamation.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 19 Sep 2009 21:26:41 +0000 (17:26 -0400)]
add static declarations
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 18 Sep 2009 13:12:35 +0000 (09:12 -0400)]
qsbr: Add write+read thread support to 32-bit QSBR
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 18 Sep 2009 13:05:03 +0000 (09:05 -0400)]
QSBR: Implement 2-phase grace period for 32-bit arch
Ensures we never run in overflow on 32-bit arch.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 18 Sep 2009 12:59:21 +0000 (08:59 -0400)]
Permit both 32 and 64-bit builds
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 18 Sep 2009 12:47:55 +0000 (08:47 -0400)]
Default to architecture size, add Makefile32
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 18 Sep 2009 12:46:24 +0000 (08:46 -0400)]
Update makefile to compiler for 32-bit architectures on x86_64
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 18 Sep 2009 12:32:23 +0000 (08:32 -0400)]
Rename define
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 18 Sep 2009 12:30:03 +0000 (08:30 -0400)]
Fix urcu.c comment
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
This page took 0.041212 seconds and 4 git commands to generate.