Mathieu Desnoyers [Mon, 19 Oct 2009 23:43:34 +0000 (19:43 -0400)]
uatomic compat: complete i386 support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 19 Oct 2009 23:39:15 +0000 (19:39 -0400)]
uatomic: update atomic set/read, use STORE_SHARED/LOAD_SHARED
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 14 Oct 2009 22:21:55 +0000 (18:21 -0400)]
version 2.2.3
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 13 Oct 2009 16:19:29 +0000 (12:19 -0400)]
Fix gcc-4.1 x86_64 compability
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 13 Oct 2009 14:02:58 +0000 (10:02 -0400)]
Remove ACLOCAL_AMFLAGS=-I m4 from Makefile.am
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Paul E. McKenney [Mon, 12 Oct 2009 21:32:44 +0000 (17:32 -0400)]
Fixes to allow building on Power
Add errno.h to a number of files, and remove build dependency on m4.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 12 Oct 2009 20:48:40 +0000 (16:48 -0400)]
Using AM_PROG_MKDIR_P for compatibility
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Pierre-Marc Fournier [Fri, 9 Oct 2009 22:36:17 +0000 (18:36 -0400)]
tests: change some top_builddir to top_srcdir
We didn't have problems with this error because the VPATH saved us.
But let's be clean anyway.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 9 Oct 2009 15:48:59 +0000 (11:48 -0400)]
update README about futex
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 9 Oct 2009 15:18:55 +0000 (11:18 -0400)]
Use mkdir_p (old) for older automake support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 9 Oct 2009 15:11:37 +0000 (11:11 -0400)]
Stay safe on i686 fence compatibility
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 9 Oct 2009 15:05:48 +0000 (11:05 -0400)]
Add AC_CONFIG_MACRO_DIR([m4]), re-add ACLOCAL_AMFLAGS
Fixes warning:
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 9 Oct 2009 14:53:58 +0000 (10:53 -0400)]
Update Makefile.am
- remove aclocal -I m4
- fix api.h dependency
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 9 Oct 2009 14:33:02 +0000 (10:33 -0400)]
AC_PROG_MKDIR_P needed with automake 1.9
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 9 Oct 2009 14:23:09 +0000 (10:23 -0400)]
Update rcutorture: test all RCU flavors
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 22:08:23 +0000 (18:08 -0400)]
Make urcu/config.h work.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 21:36:31 +0000 (17:36 -0400)]
Compat futex
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Pierre-Marc Fournier [Thu, 8 Oct 2009 20:40:15 +0000 (16:40 -0400)]
move config.h to urcu/config.h and install it
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 19:18:56 +0000 (15:18 -0400)]
Support for sys_futex autodetection
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 13:22:05 +0000 (09:22 -0400)]
Remove whitespace
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 05:11:03 +0000 (01:11 -0400)]
update readme
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 05:10:26 +0000 (01:10 -0400)]
update readme
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 05:04:54 +0000 (01:04 -0400)]
Update configure.ac
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 04:56:59 +0000 (00:56 -0400)]
add CONFIG_HAVE_FENCE on x86's newer than i586
Patch originally from Pierre-Marc Fournier, modified.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 04:44:21 +0000 (00:44 -0400)]
Update 386 cmpxchg support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 8 Oct 2009 03:48:37 +0000 (23:48 -0400)]
Add compatibility support for older intel cpus
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
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>
This page took 0.04049 seconds and 4 git commands to generate.