Forcing a 32-bit build for Sparcv9 (typical for Sparc v9)
* CFLAGS="-m32 -Wa,-Av9a -g -O2" ./configure
+
ARCHITECTURES SUPPORTED
-----------------------
-Currently, x86 (i386, i486, i586, i686), x86 64-bit, PowerPC 32/64, S390, S390x,
-ARM, Alpha, ia64 and Sparcv9 32/64 are supported. Only tested on Linux so
-far, but should theoretically work on other operating systems.
+Currently, Linux x86 (i386, i486, i586, i686), x86 64-bit, PowerPC 32/64,
+S390, S390x, ARM, Alpha, ia64 and Sparcv9 32/64 are supported. Tested on
+Linux, FreeBSD 8.2/9.0, and Cygwin. Should also work on: Android, NetBSD 5,
+OpenBSD, Darwin (more testing needed before claiming support for these OS).
-ARM depends on running a Linux kernel 2.6.15 or better, GCC 4.4 or better.
+Linux ARM depends on running a Linux kernel 2.6.15 or better, GCC 4.4 or
+better.
The gcc compiler versions 3.3, 3.4, 4.0, 4.1, 4.2, 4.3, 4.4 and 4.5 are
supported, with the following exceptions:
script in the root of the tree. It calls all the GNU tools needed to prepare the
tree configuration.
+Test scripts provided in the tests/ directory of the source tree depend
+on "bash" and the "seq" program.
+
+
+API
+---
+
+See the relevant API documentation files in doc/. The APIs provided by
+Userspace RCU are, by prefix:
+
+- rcu_ : Read-Copy Update
+- cmm_ : Concurrent Memory Model
+- caa_ : Concurrent Architecture Abstraction
+- cds_ : Concurrent Data Structures
+- uatomic_: Userspace Atomic
+
QUICK START GUIDE
-----------------
grace periods. A number of additional functions are provided
to manage the helper threads used by call_rcu(), but reasonable
defaults are used if these additional functions are not invoked.
- See API.txt for more details.
+ See rcu-api.txt in userspace-rcu documentation for more details.
Being careful with signals
signal(7). The liburcu-mb and liburcu-qsbr versions of the Userspace RCU
library do not require any signal.
- Read-side critical sections are allowed in a signal handler with
- liburcu and liburcu-mb. Be careful, however, to disable these signals
+ Read-side critical sections are allowed in a signal handler,
+ except those setup with sigaltstack(2), with liburcu and
+ liburcu-mb. Be careful, however, to disable these signals
between thread creation and calls to rcu_register_thread(), because a
- signal handler nesting on an unregistered thread would not be allowed to
- call rcu_read_lock().
+ signal handler nesting on an unregistered thread would not be
+ allowed to call rcu_read_lock().
Read-side critical sections are _not_ allowed in a signal handler with
liburcu-qsbr, unless signals are disabled explicitly around each