--- /dev/null
+Userspace RCU Concurrent Data Structures (CDS) API
+by Mathieu Desnoyers and Paul E. McKenney
+
+
+This document describes briefly the data structures contained with the
+userspace RCU library.
+
+urcu/list.h:
+
+ Doubly-linked list, which requires mutual exclusion on updates
+ and reads.
+
+urcu/rculist.h:
+
+ Doubly-linked list, which requires mutual exclusion on updates,
+ allows RCU read traversals.
+
+urcu/hlist.h:
+
+ Doubly-linked list, with single pointer list head. Requires
+ mutual exclusion on updates and reads. Useful for implementing
+ hash tables. Downside over list.h: lookup of tail in O(n).
+
+urcu/rcuhlist.h:
+
+ Doubly-linked list, with single pointer list head. Requires
+ mutual exclusion on updates, allows RCU read traversals. Useful
+ for implementing hash tables. Downside over rculist.h: lookup of
+ tail in O(n).
+
+urcu/rculfqueue.h:
+
+ RCU queue with lock-free enqueue, lock-free dequeue. RCU used to
+ provide existance guarantees.
+
+urcu/wfqueue.h:
+
+ Queue with wait-free enqueue, blocking dequeue. This queue does
+ _not_ use RCU.
+
+urcu/rculfstack.h:
+
+ RCU stack with lock-free push, lock-free dequeue. RCU used to
+ provide existance guarantees.
+
+urcu/wfstack.h:
+
+ Stack with wait-free enqueue, blocking dequeue. This stack does
+ _not_ use RCU.
+
+urcu/rculfhash.h:
+
+ Lock-Free Resizable RCU Hash Table. RCU used to provide
+ existance guarantees. Provides scalable updates, and scalable
+ RCU read-side lookups and traversals. Unique and duplicate keys
+ are supported. Provides "uniquify add" and "replace add"
+ operations, along with associated read-side traversal uniqueness
+ guarantees. Automatic hash table resize based on number of
+ elements is supported. See the API for more details.