urcu.git
14 years agoAdd header files supporting gcc __sync_ primitives
Paul E. McKenney [Fri, 18 Jun 2010 16:05:12 +0000 (12:05 -0400)] 
Add header files supporting gcc __sync_ primitives

Add a urcu/arch_gcc.h and urcu/uatomic_arch_gcc.h whose primitives are
based on the gcc __sync_ primitives.  This should be usable for all
systems that have correctly implemented __sync_ primitives, which sadly
does not include all combinations of systems and compilers.  In addition,
specific systems may gain higher performance with hand-coded primitives.
Nevertheless, this is nice for getting a new architecture up and running
quickly.

As suggested by Paolo Bonzini, defer the definition of mb() to the common
arch_generic.h file, and also defer the uatomic*() primitives to
uatomic_generic.h.

[Mathieu : fixed arch_gcc.h header which contained incorrect arch_unknown.h in
           header.]

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoAdd test cycles per loop
Mathieu Desnoyers [Sun, 13 Jun 2010 23:55:41 +0000 (19:55 -0400)] 
Add test cycles per loop

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoAdd uatomic test to make check
Mathieu Desnoyers [Sun, 13 Jun 2010 22:44:04 +0000 (18:44 -0400)] 
Add uatomic test to make check

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoRemove unused sync_core() definitions
Paul E. McKenney [Sun, 13 Jun 2010 21:30:04 +0000 (17:30 -0400)] 
Remove unused sync_core() definitions

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoUpdate version to 0.4.4 v0.4.4
Mathieu Desnoyers [Thu, 20 May 2010 22:12:11 +0000 (18:12 -0400)] 
Update version to 0.4.4

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoFix powerpc uatomic 4-byte cmpxchg (cmpd -> cmpw)
Mathieu Desnoyers [Thu, 20 May 2010 22:09:20 +0000 (18:09 -0400)] 
Fix powerpc uatomic 4-byte cmpxchg (cmpd -> cmpw)

Necessary to make it work on 32-bit only powerpc architectures. Was using the
64-bit comparison rather than the 32-bit comparison for 4-byte cmpxchg.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agourcu-qsbr: use same ongoing helper for 32 and 64 bits
Mathieu Desnoyers [Fri, 14 May 2010 00:15:10 +0000 (20:15 -0400)] 
urcu-qsbr: use same ongoing helper for 32 and 64 bits

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years ago"make check" runs the test suite
Giuseppe Scrivano [Tue, 20 Apr 2010 13:08:16 +0000 (09:08 -0400)] 
"make check" runs the test suite

a trivial patch to enable the Makefile "check" rule.

Signed-off-by: Giuseppe Scrivano <gscrivano@gnu.org>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoSimplify qsbr online condition
Mathieu Desnoyers [Wed, 14 Apr 2010 16:56:53 +0000 (12:56 -0400)] 
Simplify qsbr online condition

Alan Stern wrote:

>       return v && (v - rcu_gp_ctr > ULONG_MAX / 2);
>
> Wouldn't it be better to write:
>
>       return v != 0 && v != rcu_gp_ctr;
>
> or something equivalent?  The point is, it's foolish to return 0 when
> rcu_gp_ctr has wrapped around to below v.  This can happen only when
> rcu_thread_online() is delayed (as by preemption), in which case we
> know that there's a good chance the algorithm will fail.  My version of
> the test eliminates the possibility of this failure, although it
> doesn't eliminate the possibility that rcu_gp_ctr has wrapped around so
> far that it is equal to v.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoCleanup: head -> node field name
Mathieu Desnoyers [Wed, 14 Apr 2010 16:37:15 +0000 (12:37 -0400)] 
Cleanup: head -> node field name

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoUpdate urcu and urcu-qsbr, make compiler barriers explicit
Mathieu Desnoyers [Wed, 17 Mar 2010 13:31:26 +0000 (09:31 -0400)] 
Update urcu and urcu-qsbr, make compiler barriers explicit

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agourcu: Add extra "engineering safety factor" memory barrier in update_counter_and_wait()
Mathieu Desnoyers [Sun, 14 Mar 2010 19:33:51 +0000 (15:33 -0400)] 
urcu: Add extra "engineering safety factor" memory barrier in update_counter_and_wait()

Even though the memory barriers within update_counter_and_wait() are proven not
to be needed in urcu-mb/signal/qsbr implementations, we leave them in place as
an engineering safety factor. Basically, we've proven they are not required
(formally for urcu-mb and urcu-signal by model checking, less formally for
urcu-qsbr by looking at the execution order of concurrent synchronize_rcu() and
RCU read-sides with out-of-order load/stores). However, given that on the
overall performance impact of synchronize_rcu(), these memory barriers do not
add a significant overhead, let's leave them in place with a comment stating
that they are not required.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agourcu-qsbr: document compiler barrier
Mathieu Desnoyers [Sun, 14 Mar 2010 14:27:23 +0000 (10:27 -0400)] 
urcu-qsbr: document compiler barrier

This compiler barrier is, at the implementation level, already provided by the
volatile accesses for STORE/LOAD_SHARED. However, given that these primitives
does not provide this guarantee at the high-level (and might use lighter gcc
primitives eventually), we need to add an explicit barrier().

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoupdate version to 0.4.3 v0.4.3
Mathieu Desnoyers [Sun, 7 Mar 2010 02:07:18 +0000 (21:07 -0500)] 
update version to 0.4.3

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoFix typo in urcu/uatomic_generic.h
Jon Bernard [Sun, 7 Mar 2010 02:06:36 +0000 (21:06 -0500)] 
Fix typo in urcu/uatomic_generic.h

Signed-off-by: Jon Bernard <jbernard@debian.org>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoUpdate version to 0.4.2 v0.4.2
Mathieu Desnoyers [Thu, 4 Mar 2010 19:57:57 +0000 (14:57 -0500)] 
Update version to 0.4.2

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoUpdate README
Mathieu Desnoyers [Thu, 4 Mar 2010 14:54:51 +0000 (09:54 -0500)] 
Update README

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agourcu-bp: reset ctr to 0 upon garbage collection
Mathieu Desnoyers [Wed, 3 Mar 2010 14:08:30 +0000 (09:08 -0500)] 
urcu-bp: reset ctr to 0 upon garbage collection

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agocompiler.h: add () in ACCESS_ONCE()
Mathieu Desnoyers [Tue, 2 Mar 2010 16:41:01 +0000 (11:41 -0500)] 
compiler.h: add () in ACCESS_ONCE()

Protect x in ACCESS_ONCE macro.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agourcu-defer: remove "ratelimit" leftover
Mathieu Desnoyers [Tue, 2 Mar 2010 16:36:49 +0000 (11:36 -0500)] 
urcu-defer: remove "ratelimit" leftover

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoUpdate readme: ia64 and alpha support
Mathieu Desnoyers [Tue, 2 Mar 2010 16:18:30 +0000 (11:18 -0500)] 
Update readme: ia64 and alpha support

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoInstall missing arch_generic.h
Mathieu Desnoyers [Tue, 2 Mar 2010 16:08:19 +0000 (11:08 -0500)] 
Install missing arch_generic.h

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agourcu: fix multiple register/unregister assertion failure
Mathieu Desnoyers [Mon, 1 Mar 2010 21:42:15 +0000 (16:42 -0500)] 
urcu: fix multiple register/unregister assertion failure

Caused by the fact that we check for the whole gp count (which includes the last
grace period phase bit) rather than just checking if the nesting count mask is
zero.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agotest cases: add multiple register/unregister tests
Mathieu Desnoyers [Mon, 1 Mar 2010 21:41:51 +0000 (16:41 -0500)] 
test cases: add multiple register/unregister tests

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agocentralize definition of BITS_PER_LONG
Paolo Bonzini [Mon, 1 Mar 2010 19:12:21 +0000 (14:12 -0500)] 
centralize definition of BITS_PER_LONG

Use __SIZEOF_LONG__, defined by GCC 4.3 or later, or _LP64, defined
by GCC 3.4 or later.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoavoid multiple evaluation of STORE_SHARED argument
Paolo Bonzini [Mon, 1 Mar 2010 19:06:01 +0000 (14:06 -0500)] 
avoid multiple evaluation of STORE_SHARED argument

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agosupport compiling on unknown architectures
Paolo Bonzini [Mon, 1 Mar 2010 19:04:11 +0000 (14:04 -0500)] 
support compiling on unknown architectures

The new defaults mean that, for example, ia64 support comes for free.

[edit by Mathieu Desnoyers]

defaults -> generic

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoadd Alpha support
Paolo Bonzini [Mon, 1 Mar 2010 19:02:55 +0000 (14:02 -0500)] 
add Alpha support

And you already know what needs to be special-cased for Alpha...

[edit by Mathieu Desnoyers]

defaults -> generic

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agomove whether atomic byte/short exists to uatomic_arch_*.h
Paolo Bonzini [Mon, 1 Mar 2010 19:00:22 +0000 (14:00 -0500)] 
move whether atomic byte/short exists to uatomic_arch_*.h

And add more generic implementations to uatomic_defaults.h.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agouse uatomic_generic.h for common fallback implementations
Paolo Bonzini [Mon, 1 Mar 2010 18:58:45 +0000 (13:58 -0500)] 
use uatomic_generic.h for common fallback implementations

And now, really remove the code for S390/SPARC, using the fallback
implementation of uatomic_generic.h

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoadd uatomic_generic.h, use it for common definitions
Paolo Bonzini [Mon, 1 Mar 2010 18:57:00 +0000 (13:57 -0500)] 
add uatomic_generic.h, use it for common definitions

uatomic_generic.h can be included by uatomic_arch_*.h to provide useful
default definitions.  uatomic_arch_*.h can define whatever builtins
it wants to override, then uatomic_generic.h will provide what is not
already defined, as follows:

- uatomic_cmpxchg will use __sync_val_compare_and_swap builtins;

- uatomic_add_return will use __sync_fetch_and_add if uatomic_arch_*.h
did not provide a definition of uatomic_cmpxchg.  If it did, we assume
__sync builtins are buggy or otherwise undesirable on this platform,
so uatomic_generic.h will implement uatomic_add_return in terms of
uatomic_cmpxchg too.

- uatomic_xchg is like uatomic_add_return.  However, since GCC does
not provide an adequate builtin, it needs to use a compare-and-swap
loop using __sync_bool_compare_and_swap if uatomic_cmpxchg is not
provided.

- uatomic_sub_return/uatomic_add/uatomic_sub will be implemented
in terms of uatomic_add_return;

- uatomic_inc/uatomic_dec will be implemented in terms of uatomic_add.

After this patch, uatomic_generic.h is already used for the latter two
categories.  The next patch will use uatomic_generic.h whenever there is
no assembly code involved, or otherwise it makes no difference to use
uatomic_generic.h.  We keep custom per-arch macros to provide support for
compilers back to early GCC 3.x versions; however future ports may
not have this limitation.

The hunk in tests/test_uatomic.c is only needed for bisectability
and will be removed later.

[edit by Mathieu Desnoyers]

Fixed Makefile.am conflict.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoremove compat_uatomic_cmpxchg #define from non-x86
Paolo Bonzini [Mon, 1 Mar 2010 18:53:51 +0000 (13:53 -0500)] 
remove compat_uatomic_cmpxchg #define from non-x86

This is unused everywhere except on x86.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agodefine sync_core for x86 PIC
Paolo Bonzini [Mon, 1 Mar 2010 18:52:45 +0000 (13:52 -0500)] 
define sync_core for x86 PIC

Pushing/popping the reserved ebx register is surely less expensive
than a memory barrier.

Note that since ebx is a callee-save register, this is even safe for
signals (i.e. it would be safe even if we needed the value that cpuid
puts in %%ebx).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoadd urcu/arch_generic.h
Paolo Bonzini [Mon, 1 Mar 2010 18:51:14 +0000 (13:51 -0500)] 
add urcu/arch_generic.h

Most of the memory barrier definitions are shared between all
architectures, especially smp_* and mc/rmc/wmc.  Put them in
a common file.

[edit by Mathieu Desnoyers]

+ * arch_defaults.h: common definitions for multiple architectures.
 becomes
+ * arch_generic.h: common definitions for multiple architectures.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agouse autoconf symbolic linking
Paolo Bonzini [Mon, 1 Mar 2010 18:50:32 +0000 (13:50 -0500)] 
use autoconf symbolic linking

Instead of copying.  This is less error-prone while developing and
lets Automake handle more stuff.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agouse kernel style makefile output
Paolo Bonzini [Mon, 1 Mar 2010 18:49:54 +0000 (13:49 -0500)] 
use kernel style makefile output

A breath of fresh air.  Requires Automake 1.11, but the
patch degrades gracefully.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoupdate README for urcu-signal
Mathieu Desnoyers [Fri, 19 Feb 2010 22:20:24 +0000 (17:20 -0500)] 
update README for urcu-signal

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agolist: new -> _new for c++ compatibility
Mathieu Desnoyers [Fri, 19 Feb 2010 14:28:41 +0000 (09:28 -0500)] 
list: new -> _new for c++ compatibility

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agorcuhlist: add head name fix
Mathieu Desnoyers [Fri, 19 Feb 2010 14:08:18 +0000 (09:08 -0500)] 
rcuhlist: add head name fix

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoRCU list: add rcuhlist.h, add list_replace_rcu
Mathieu Desnoyers [Fri, 19 Feb 2010 04:45:40 +0000 (23:45 -0500)] 
RCU list: add rcuhlist.h, add list_replace_rcu

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agotests: update writer cs len script for 64-core ppc
Mathieu Desnoyers [Sun, 14 Feb 2010 15:07:43 +0000 (10:07 -0500)] 
tests: update writer cs len script for 64-core ppc

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agotests: update summary
Mathieu Desnoyers [Sun, 14 Feb 2010 14:06:47 +0000 (09:06 -0500)] 
tests: update summary

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agourcu tests: add writer duration parameter
Mathieu Desnoyers [Sun, 14 Feb 2010 13:43:05 +0000 (08:43 -0500)] 
urcu tests: add writer duration parameter

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoUpdate to version 0.4.1 v0.4.1
Mathieu Desnoyers [Fri, 12 Feb 2010 22:52:50 +0000 (17:52 -0500)] 
Update to version 0.4.1

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agourcu-static.h: use SYS_membarrier rather than __NR_membarrier
Mathieu Desnoyers [Fri, 12 Feb 2010 21:39:22 +0000 (16:39 -0500)] 
urcu-static.h: use SYS_membarrier rather than __NR_membarrier

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agos390: fix arch_s390.h include of urcu/compiler.h
Mathieu Desnoyers [Fri, 12 Feb 2010 01:11:44 +0000 (20:11 -0500)] 
s390: fix arch_s390.h include of urcu/compiler.h

gcc -DHAVE_CONFIG_H -I. -I.. -I../urcu    -DTORTURE_URCU -I.. -I.. -g -O2 -c -o rcutorture_urcu-urcutorture.o `test -f 'urcutorture.c' || echo './'`urcutorture.c
/bin/sh ../libtool --tag=CC   --mode=link gcc -DTORTURE_URCU -I.. -I.. -g -O2 -lpthread  -o rcutorture_urcu rcutorture_urcu-urcutorture.o ../urcu.c ../urcu-pointer.c
gcc -DTORTURE_URCU -I.. -I.. -g -O2 -o rcutorture_urcu rcutorture_urcu-urcutorture.o ../urcu.c ../urcu-pointer.c  -lpthread
In file included from ../urcu-static.h:38,
                 from ../urcu.c:36:
../urcu/arch.h:31:22: error: compiler.h: No such file or directory
In file included from ../urcu/system.h:22,
                 from ../urcu/uatomic_arch.h:33,
                 from ../urcu-pointer.c:27:
../urcu/arch.h:31:22: error: compiler.h: No such file or directory
make[3]: *** [rcutorture_urcu] Error 1
make[3]: Leaving directory `/build/buildd-liburcu_0.4.0-1-s390-vwO9c1/liburcu-0.4.0/tests'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/build/buildd-liburcu_0.4.0-1-s390-vwO9c1/liburcu-0.4.0'
make[1]: *** [all] Error 2
dh_auto_build: make -j1 returned exit code 2
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
make[1]: Leaving directory `/build/buildd-liburcu_0.4.0-1-s390-vwO9c1/liburcu-0.4.0'

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agoREADME: discuss mutex vs RCU interaction
Mathieu Desnoyers [Mon, 8 Feb 2010 21:57:57 +0000 (16:57 -0500)] 
README: discuss mutex vs RCU interaction

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 years agostandardize rcu_gp_ongoing
Mathieu Desnoyers [Mon, 8 Feb 2010 14:36:41 +0000 (09:36 -0500)] 
standardize rcu_gp_ongoing

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agorename rcu_old_gp_ongoing to rcu_gp_ongoing
Mathieu Desnoyers [Mon, 8 Feb 2010 14:28:14 +0000 (09:28 -0500)] 
rename rcu_old_gp_ongoing to rcu_gp_ongoing

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoupdate LOAD_SHARED/STORE_SHARED for need_mb.
Mathieu Desnoyers [Mon, 8 Feb 2010 14:18:43 +0000 (09:18 -0500)] 
update LOAD_SHARED/STORE_SHARED for need_mb.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agourcu: use unsigned long instead of long
Mathieu Desnoyers [Mon, 8 Feb 2010 13:18:08 +0000 (08:18 -0500)] 
urcu: use unsigned long instead of long

As it is currently designed, urcu scheme never overflows and we do not use the
upper "sign" bit. But, nevertheless, just in case we choose to do it differently
in the future, use an unsigned long type to allow:

- overflow
- defined used of 0x80000000

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoupdate version to 0.4.0 v0.4.0
Mathieu Desnoyers [Sat, 30 Jan 2010 18:29:21 +0000 (13:29 -0500)] 
update version to 0.4.0

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoURCU: rename light/heavy barriers to slave/master
Mathieu Desnoyers [Sat, 30 Jan 2010 18:28:35 +0000 (13:28 -0500)] 
URCU: rename light/heavy barriers to slave/master

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoQSBR URCU: remove unused reader_barrier() declaration
Mathieu Desnoyers [Sat, 30 Jan 2010 18:21:27 +0000 (13:21 -0500)] 
QSBR URCU: remove unused reader_barrier() declaration

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoUpdate comments
Mathieu Desnoyers [Sun, 17 Jan 2010 18:25:06 +0000 (13:25 -0500)] 
Update comments

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoInternal cleanup
Mathieu Desnoyers [Sun, 17 Jan 2010 17:15:44 +0000 (12:15 -0500)] 
Internal cleanup

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agorename internal_rcu_lock() into mutex_lock/unlock(&rcu_gp_lock)
Mathieu Desnoyers [Sun, 17 Jan 2010 16:42:56 +0000 (11:42 -0500)] 
rename internal_rcu_lock() into mutex_lock/unlock(&rcu_gp_lock)

Cleanup.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoAdd SIGURCU backward compatibility
Mathieu Desnoyers [Fri, 15 Jan 2010 16:32:35 +0000 (11:32 -0500)] 
Add SIGURCU backward compatibility

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoUpdate support for MEMBARRIER_QUERY
Mathieu Desnoyers [Thu, 14 Jan 2010 01:52:52 +0000 (20:52 -0500)] 
Update support for MEMBARRIER_QUERY

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoSupport sys_membarrier v6 ABI
Mathieu Desnoyers [Wed, 13 Jan 2010 23:46:53 +0000 (18:46 -0500)] 
Support sys_membarrier v6 ABI

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoAdd sys_membarrier() dynamic detection, old liburcu.so -> liburcu-signal.so
Mathieu Desnoyers [Wed, 13 Jan 2010 18:02:21 +0000 (13:02 -0500)] 
Add sys_membarrier() dynamic detection, old liburcu.so -> liburcu-signal.so

See updated README for library renaming details.

liburcu is now dynamically detecting if sys_membarrier is available, and using
urcu-mb as fall back.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agourcu signal-based renames
Mathieu Desnoyers [Wed, 13 Jan 2010 16:59:00 +0000 (11:59 -0500)] 
urcu signal-based renames

reader_barrier renamed to smp_mb_light
force_mb_all_readers renamed to smp_mb_heavy

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agosignal-based urcu: rename force_mb_all_threads -> force_mb_all_readers
Mathieu Desnoyers [Wed, 13 Jan 2010 16:37:14 +0000 (11:37 -0500)] 
signal-based urcu: rename force_mb_all_threads -> force_mb_all_readers

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoCleanup urcu-defer static header
Mathieu Desnoyers [Wed, 13 Jan 2010 16:36:10 +0000 (11:36 -0500)] 
Cleanup urcu-defer static header

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoAPI prefix standardization: urcu_ -> rcu_
Mathieu Desnoyers [Wed, 13 Jan 2010 16:33:21 +0000 (11:33 -0500)] 
API prefix standardization: urcu_ -> rcu_

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoversion 0.3.4 v0.3.4
Mathieu Desnoyers [Sun, 10 Jan 2010 19:29:28 +0000 (14:29 -0500)] 
version 0.3.4

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoSupport earlier glibc sched_setaffinity
Pedro Alves [Sun, 10 Jan 2010 19:24:31 +0000 (14:24 -0500)] 
Support earlier glibc sched_setaffinity

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Signed-off-by: Pedro Alves <pedro@codesourcery.com>
14 years agoRemove bogus ; from defines
Mathieu Desnoyers [Sun, 10 Jan 2010 04:25:23 +0000 (23:25 -0500)] 
Remove bogus ; from defines

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoversion 0.3.3 v0.3.3
Mathieu Desnoyers [Mon, 4 Jan 2010 19:08:21 +0000 (14:08 -0500)] 
version 0.3.3

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoConsider __NO_LWSYNC__
Sebastian Andrzej Siewior [Thu, 10 Dec 2009 19:20:16 +0000 (14:20 -0500)] 
Consider __NO_LWSYNC__

This is set by the gcc when the target does not support the lwsync
opcode. This is the case for e500 core based CPUs.

I haven't touch tests/api_ppc.h because I don't see any users.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoversion 0.3.2 v0.3.2
Mathieu Desnoyers [Thu, 10 Dec 2009 13:31:55 +0000 (08:31 -0500)] 
version 0.3.2

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agos390 uatomic: fix new compiler support
Mathieu Desnoyers [Tue, 8 Dec 2009 00:10:00 +0000 (19:10 -0500)] 
s390 uatomic: fix new compiler support

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoAdd extern "C" to support linking userspace RCU library with C++ applications
Mathieu Desnoyers [Mon, 7 Dec 2009 14:39:20 +0000 (09:39 -0500)] 
Add extern "C" to support linking userspace RCU library with C++ applications

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agos390 uatomic arch fix
Mathieu Desnoyers [Mon, 7 Dec 2009 03:26:23 +0000 (22:26 -0500)] 
s390 uatomic arch fix

    In file included from urcu-static.h:40,
                     from urcu.c:35:
    ./urcu/uatomic_arch.h: In function ‘_uatomic_exchange’:
    ./urcu/uatomic_arch.h:88: warning: dereferencing ‘void *’ pointer
    ./urcu/uatomic_arch.h:89: warning: dereferencing ‘void *’ pointer
    ./urcu/uatomic_arch.h:89: error: expected ‘:’ or ‘)’ before ‘(’ token
    ./urcu/uatomic_arch.h: In function ‘_uatomic_cmpxchg’:
    ./urcu/uatomic_arch.h:131: warning: dereferencing ‘void *’ pointer
    ./urcu/uatomic_arch.h:132: warning: dereferencing ‘void *’ pointer
    ./urcu/uatomic_arch.h:132: error: expected ‘:’ or ‘)’ before ‘(’ token

Use same hidden pointer technique used for x86.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoFix s390 uatomic ops new compiler support
Mathieu Desnoyers [Sun, 6 Dec 2009 23:35:31 +0000 (18:35 -0500)] 
Fix s390 uatomic ops new compiler support

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agos390 uatomic: short memory operand support for new compilers
Mathieu Desnoyers [Wed, 2 Dec 2009 17:37:46 +0000 (12:37 -0500)] 
s390 uatomic: short memory operand support for new compilers

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agos390: uatomic add missing xchg return
Mathieu Desnoyers [Tue, 1 Dec 2009 19:09:47 +0000 (14:09 -0500)] 
s390: uatomic add missing xchg return

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agos390: uatomic add missing inline and other { }
Mathieu Desnoyers [Tue, 1 Dec 2009 17:26:25 +0000 (12:26 -0500)] 
s390: uatomic add missing inline and other { }

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoupdate s390 ifdefs
Mathieu Desnoyers [Tue, 1 Dec 2009 17:22:17 +0000 (12:22 -0500)] 
update s390 ifdefs

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agos390: add block after label
Jon Bernard [Tue, 1 Dec 2009 17:20:09 +0000 (12:20 -0500)] 
s390: add block after label

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agosparc,ppc,s390: uatomic ops update
Mathieu Desnoyers [Tue, 1 Dec 2009 16:19:07 +0000 (11:19 -0500)] 
sparc,ppc,s390: uatomic ops update

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoUpdate arch_s390.h, missing definitions
Mathieu Desnoyers [Tue, 1 Dec 2009 15:47:21 +0000 (10:47 -0500)] 
Update arch_s390.h, missing definitions

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agos390: fix config.h include
Mathieu Desnoyers [Tue, 1 Dec 2009 13:42:51 +0000 (08:42 -0500)] 
s390: fix config.h include

 gcc -DHAVE_CONFIG_H -I. -I./urcu -I./urcu -g -O2 -c urcu.c  -fPIC -DPIC -o
  .libs/urcu.o
In file included from urcu-static.h:38,
                 from urcu.c:35:
./urcu/arch.h:32:27: error: config/config.h: No such file or directory

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoUpdate version to 0.3.1 v0.3.1
Mathieu Desnoyers [Mon, 16 Nov 2009 20:31:35 +0000 (15:31 -0500)] 
Update version to 0.3.1

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agoSupport sparcv9 32-bit build
Mathieu Desnoyers [Mon, 16 Nov 2009 20:27:50 +0000 (15:27 -0500)] 
Support sparcv9 32-bit build

From: David Miller <davem@davemloft.net>
Subject: Re: [ltt-dev] Sparc64 support added to Userspace RCU

From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Date: Thu, 22 Oct 2009 15:57:53 -0400

> Feedback is welcome,

__sparc_v8__ does not mean 64-bit longs or pointers as implied here:

"v8" was the last 32-bit standard of the cpu architecture.

Otherwise looks fine.

Although this port won't be very useful until it can be built in
32-bit mode.  As most applications on sparc64 systems are still
32-bit.  Like on powerpc, people only rarely build things 64-bit on
sparc64.

You need to build with "-Wa,-Av9a" on the GCC command line for that
case so that the assembler allows the v9 instructions emitted by your
macros, even when building for 32-bit.

Hope this helps.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
CC: David Miller <davem@davemloft.net>
14 years agoUpdate readme
Mathieu Desnoyers [Thu, 12 Nov 2009 04:24:21 +0000 (23:24 -0500)] 
Update readme

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
14 years agocross-compilation: use $host instead of $target
Pierre-Marc Fournier [Wed, 11 Nov 2009 22:48:40 +0000 (17:48 -0500)] 
cross-compilation: use $host instead of $target

$target should be used only when building a compiler. It indicates
the target system for which the compiler will build executables.

$host is the variable that should be used to indicate the type of
system the package we are compiling now will run on.

Also, update the README to say to use --host instead of --target.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoUpdate version to 0.3.0 v0.3.0
Mathieu Desnoyers [Tue, 3 Nov 2009 14:49:57 +0000 (09:49 -0500)] 
Update version to 0.3.0

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agourcu-defer: generate linker error if call_rcu() is used
Mathieu Desnoyers [Tue, 3 Nov 2009 14:49:01 +0000 (09:49 -0500)] 
urcu-defer: generate linker error if call_rcu() is used

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoupdate README for defer_rcu()
Mathieu Desnoyers [Fri, 23 Oct 2009 17:39:04 +0000 (13:39 -0400)] 
update README for defer_rcu()

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoMark defer_rcu() API as experimental.
Mathieu Desnoyers [Fri, 23 Oct 2009 17:38:05 +0000 (13:38 -0400)] 
Mark defer_rcu() API as experimental.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoDocument urcu-defer usage with dlclose()
Mathieu Desnoyers [Fri, 23 Oct 2009 12:27:20 +0000 (08:27 -0400)] 
Document urcu-defer usage with dlclose()

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoAdd defer_rcu_ratelimit()
Mathieu Desnoyers [Fri, 23 Oct 2009 12:17:29 +0000 (08:17 -0400)] 
Add defer_rcu_ratelimit()

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoupdate readme for rcu_defer()
Mathieu Desnoyers [Fri, 23 Oct 2009 12:05:19 +0000 (08:05 -0400)] 
update readme for rcu_defer()

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agourcu-defer: remove call_rcu() API, replace by defer_rcu()
Mathieu Desnoyers [Fri, 23 Oct 2009 11:57:28 +0000 (07:57 -0400)] 
urcu-defer: remove call_rcu() API, replace by defer_rcu()

Ensure we do not expose an API different from the kernel with the same name and
different semantic.

defer_rcu() cannot be called from within a RCU read-side C.S..

call_rcu() should eventually be re-implemented with struct rcu_head, permitting
to be called from within a RCU read-side C.S.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoSparc64: complete and test implementation
Mathieu Desnoyers [Thu, 22 Oct 2009 19:50:05 +0000 (15:50 -0400)] 
Sparc64: complete and test implementation

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoAdd basic sparc64 support
Mathieu Desnoyers [Thu, 22 Oct 2009 19:11:08 +0000 (15:11 -0400)] 
Add basic sparc64 support

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agoupdate version to 0.2.4 v0.2.4
Mathieu Desnoyers [Mon, 19 Oct 2009 23:44:11 +0000 (19:44 -0400)] 
update version to 0.2.4

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
15 years agouatomic compat: complete i386 support
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>
15 years agouatomic: update atomic set/read, use STORE_SHARED/LOAD_SHARED
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>
This page took 0.046755 seconds and 4 git commands to generate.