Rename all data structure with prefix cds_ This is the third and last patch of the namespace refactoring. The prefix cds_ stands for Concurrent Data Structure and is use for queue, list, hlist and stack. For RCU protected data strucutre, the prefix is also added but the suffix _rcu is appended. This suffix indicate and RCU protection. Signed-off-by: David Goulet <david.goulet@polymtl.ca> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
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>
urcu-defer: remove unnecessary memory barrier All synchronization between queue producer/consumer is performed by the write to "head". Before this write, none of the queued data is visible from the consumer point of view. Therefore, just a single wmb() is required before writing to head to ensure correct synchronization. This matches with the rmb() after reading head on the consumer side. Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
generic urcu deferral (call_rcu()) Found out a way to encode the queues so the standard scenario is to use a single pointer per call_rcu(). Uses more space for: - unaligned functions pointers. - unaligned data pointers. - function/data value : -2L. (this is arbitrary) Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>