X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=README;h=0ec723dea10186d13e6c11705e18a0c8149ae288;hb=cee02f0ab0a6766662490f2d815d487c098c17b1;hp=71cf729598bd8e5e9223246a3b5562bbaa017dd5;hpb=9fb223da744aff7501107d09d7502c2baadc421f;p=urcu.git diff --git a/README b/README index 71cf729..0ec723d 100644 --- a/README +++ b/README @@ -29,15 +29,32 @@ Writing After, synchronize_rcu() must be called. When it returns, the old values are not in usage anymore. +Being careful with signals -Usage of DEBUG_FULL_MB + The library uses signals internally. The signal handler is + registered with the SA_RESTART flag. However, these signals may cause + some non-restartable system calls to fail with errno = EINTR. Care + should be taken to restart system calls manually if they fail with this + error. A list of non-restartable system calls may be found in + signal(7). To ensure the Userspace RCU library does not use signals, + define CONFIG_URCU_AVOID_SIGNALS at compile-time. - DEBUG_FULL_MB uses full SMP barriers for readers. This eliminates the - need for signals but results in slower reads. + Read-side critical sections can sit in a signal handler. 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(). +Usage of CONFIG_URCU_AVOID_SIGNALS + + CONFIG_URCU_AVOID_SIGNALS uses full SMP barriers for readers. This + eliminates the need for signals but results in slower reads. + +Usage of DEBUG_RCU + + DEBUG_RCU is used to add internal debugging self-checks to the + RCU library. This define adds a performance penality when enabled. Usage of DEBUG_YIELD DEBUG_YIELD is used to add random delays in the code for testing purposes. -