X-Git-Url: https://git.lttng.org/?p=urcu.git;a=blobdiff_plain;f=README;h=81afe0e2757c8bceabef7c50ff4102d0600aa8d3;hp=ce25e3a3dabc8977f7a4dc5d4e391e5238e455fc;hb=f89147e91cccf7bd625260104c87acc0bae2449e;hpb=6e464eba97cf74320fe4e2b8da6dbe5039582948 diff --git a/README b/README index ce25e3a..81afe0e 100644 --- a/README +++ b/README @@ -22,14 +22,17 @@ BUILDING 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. +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: @@ -41,8 +44,9 @@ supported, with the following exceptions: http://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg281255.html - gcc 3.3 cannot match the "xchg" instruction on 32-bit x86 build. See: http://kerneltrap.org/node/7507 -- Alpha, ia64 and ARM architectures depend on 4.x gcc with atomic builtins - support. +- Alpha, ia64 and ARM architectures depend on gcc 4.x with atomic builtins + support. For ARM this was introduced with gcc 4.4: + http://gcc.gnu.org/gcc-4.4/changes.html For developers using the git tree: @@ -59,6 +63,22 @@ If you get the tree from the repository, you will need to use the "bootstrap" 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 ----------------- @@ -171,7 +191,7 @@ Usage of urcu-call-rcu 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 @@ -183,11 +203,12 @@ 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